{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#  在 Rental Listing Inquiries 数据上练习 xgboost 参数调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据说明\n",
    "数据说明：\n",
    "Rental Listing Inquiries 数据集是 Kaggle 平台上的一个分类竞赛任务，需要根据\n",
    "公寓的特征来预测其受欢迎程度（用户感兴趣程度分为高、中、低三类）。其\n",
    "中房屋的特征 x 共有 14 维，响应值 y 为用户对该公寓的感兴趣程度。评价标准\n",
    "为 logloss。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# path to where the data lies\n",
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nRqWwREREo/4/M/NxIS1P9IIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x5791160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.interest_level);\n",
    "pyplot.xlabel('interest_level');\n",
    "pyplot.ylabel('Number of interest_level');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# drop ids and get labels\n",
    "y_train = train['interest_level']\n",
    "train = train.drop(\"interest_level\", axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': range(3, 10, 2), 'min_child_weight': range(1, 6, 2)}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = range(3,10,2)\n",
    "min_child_weight = range(1,6,2)\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    #train_predprob = alg.predict_proba(X_train)\n",
    "    #logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "   #Print model report:\n",
    "   # print (\"logloss of train :\" )\n",
    "   # print logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#params = {\"objective\": \"multi:softprob\", \"eval_metric\":\"mlogloss\", \"num_class\": 9}\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n0uv/Az4wj7EF+GVCAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xc9c1898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nA+bNKWy+JcpiS5IkSVLhtGiZ7p/9CvxyFKzXJ409dB5cuTk8/Vf46dvGz68RWWxJkiRJKo7W7WHz\ng+DQ0Wms42rJNMMn/gTXbJtdbo3AZ7YkSZIkLVm+i2ks7LTx8O4YGD8UPn8tjd/YD7Y6Cjbas+Hf\no0RYbEmSJEnKTz4FWMs2sOWhsMUh8N+xcPvBSfzzV+Hh38Cjv03PrawAXCBDkiRJknIXAqy9Y3rc\n9w+w2pYwf24a+7kAnbQM2dmSJEmSVDj5Tjfc7iTY8WyYNglG7prEOqxU2NwamZ0tSZIkSaVj5Y2z\nzqBg7GxJkiRJKq5CLa7RxNjZkiRJkqQisLMlSZIkKRtl3vGysyVJkiRJRWBnS5IkSVLpKKNul50t\nSZIkSSoCiy1JkiRJKgKLLUmSJEkqAostSZIkSSoCiy1JkiRJKgKLLUmSJEkqAostSZIkSSoCiy1J\nkiRJKgKLLUmSJEkqAostSZIkSSoCiy1JkiRJKgKLLUmSJEkqAostSZIkSSoCiy1JkiRJKgKLLUmS\nJEkqAostSZIkSSoCiy1JkiRJKgKLLUmSJEkqAostSZIkSSoCiy1JkiRJKgKLLUmSJEkqAostSZIk\nSSoCiy1JkiRJKgKLLUmSJEkqAostSZIkSSoCiy1JkiRJKgKLLUmSJEkqAostSZIkSSoCiy1JkiRJ\nKgKLLUmSJEkqAostSZIkSSoCiy1JkiRJKgKLLUmSJEkqglZZJ1DKZs6cmXUKkiRJkjLUkJogxBgL\nmEp5CCGsDkzLOg9JkiRJJWONGOOn9bnAYqsWIYQAdAZ+yDoXoCNJ4bcGpZGPFuU9Km3en9LnPSpt\n3p/S5v0pfd6j0pbr/ekITI/1LJ6cRliLqj/EelWtxZLUfQD8EGN0XmMJ8h6VNu9P6fMelTbvT2nz\n/pQ+71Fpq8f9yeveuUCGJEmSJBWBxZYkSZIkFYHFVumbA/y+6qtKk/eotHl/Sp/3qLR5f0qb96f0\neY9KW1HvjwtkSJIkSVIR2NmSJEmSpCKw2JIkSZKkIrDYkiRJkqQisNiSJEmSpCKw2MpICGHnEMID\nIYTpIYQYQth/oc9DCGFw1ec/hxCeDCFsttA5y4UQRocQZlRto0MIyzbuT1KeFnd/QgitQwj/G0J4\nLYQwq+qcW0MInRcaw/tTREv6HVro3Ourzjlnobj3qEhyuT8hhE1CCPdX/dn/EEKYEELoUuPztiGE\n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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd5edf28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': range(3, 10, 2), 'min_child_weight': range(1, 6, 2)}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = range(3,10,2)\n",
    "min_child_weight = range(1,6,2)\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.60064, std: 0.00339, params: {'max_depth': 3, 'min_child_weight': 1},\n",
       "  mean: -0.60021, std: 0.00338, params: {'max_depth': 3, 'min_child_weight': 3},\n",
       "  mean: -0.60024, std: 0.00313, params: {'max_depth': 3, 'min_child_weight': 5},\n",
       "  mean: -0.58964, std: 0.00389, params: {'max_depth': 5, 'min_child_weight': 1},\n",
       "  mean: -0.58942, std: 0.00382, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.58939, std: 0.00321, params: {'max_depth': 5, 'min_child_weight': 5},\n",
       "  mean: -0.59048, std: 0.00435, params: {'max_depth': 7, 'min_child_weight': 1},\n",
       "  mean: -0.58933, std: 0.00412, params: {'max_depth': 7, 'min_child_weight': 3},\n",
       "  mean: -0.58910, std: 0.00399, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.60334, std: 0.00589, params: {'max_depth': 9, 'min_child_weight': 1},\n",
       "  mean: -0.59858, std: 0.00413, params: {'max_depth': 9, 'min_child_weight': 3},\n",
       "  mean: -0.59588, std: 0.00426, params: {'max_depth': 9, 'min_child_weight': 5}],\n",
       " {'max_depth': 7, 'min_child_weight': 5},\n",
       " -0.58910013587292942)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=235,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_1 = GridSearchCV(xgb2_1, param_grid = param_test2_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_1.grid_scores_, gsearch2_1.best_params_,     gsearch2_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 113.78215995,  167.70399995,  118.65799999,  232.72080007,\n",
       "         226.02640004,  186.1948    ,  398.65960002,  267.47308006,\n",
       "         256.27767997,  488.06624012,  332.30648012,  264.91884003]),\n",
       " 'mean_score_time': array([ 0.25200005,  0.32839999,  0.27400002,  0.37700005,  0.54739995,\n",
       "         0.32759991,  0.54820004,  0.36559997,  0.41543999,  0.50240002,\n",
       "         0.46900001,  0.33471999]),\n",
       " 'mean_test_score': array([-0.60064146, -0.60021023, -0.6002361 , -0.58964297, -0.58941599,\n",
       "        -0.58939421, -0.59047601, -0.58933011, -0.58910014, -0.60333924,\n",
       "        -0.59858381, -0.59588313]),\n",
       " 'mean_train_score': array([-0.57713174, -0.57787051, -0.57815643, -0.50952272, -0.5147522 ,\n",
       "        -0.51862399, -0.40317636, -0.42415985, -0.43799833, -0.27823927,\n",
       "        -0.32427582, -0.35271109]),\n",
       " 'param_max_depth': masked_array(data = [3 3 3 5 5 5 7 7 7 9 9 9],\n",
       "              mask = [False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_min_child_weight': masked_array(data = [1 3 5 1 3 5 1 3 5 1 3 5],\n",
       "              mask = [False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'max_depth': 3, 'min_child_weight': 1},\n",
       "  {'max_depth': 3, 'min_child_weight': 3},\n",
       "  {'max_depth': 3, 'min_child_weight': 5},\n",
       "  {'max_depth': 5, 'min_child_weight': 1},\n",
       "  {'max_depth': 5, 'min_child_weight': 3},\n",
       "  {'max_depth': 5, 'min_child_weight': 5},\n",
       "  {'max_depth': 7, 'min_child_weight': 1},\n",
       "  {'max_depth': 7, 'min_child_weight': 3},\n",
       "  {'max_depth': 7, 'min_child_weight': 5},\n",
       "  {'max_depth': 9, 'min_child_weight': 1},\n",
       "  {'max_depth': 9, 'min_child_weight': 3},\n",
       "  {'max_depth': 9, 'min_child_weight': 5}],\n",
       " 'rank_test_score': array([11,  9, 10,  5,  4,  3,  6,  2,  1, 12,  8,  7]),\n",
       " 'split0_test_score': array([-0.59504133, -0.59423757, -0.59511973, -0.58270147, -0.58320947,\n",
       "        -0.58435302, -0.58315513, -0.58166756, -0.5826619 , -0.59247709,\n",
       "        -0.59329785, -0.59022238]),\n",
       " 'split0_train_score': array([-0.57889924, -0.58003217, -0.5798103 , -0.51105858, -0.51608907,\n",
       "        -0.51963491, -0.40404341, -0.42591712, -0.43949229, -0.2778435 ,\n",
       "        -0.32514679, -0.35210115]),\n",
       " 'split1_test_score': array([-0.59933921, -0.59901577, -0.59858377, -0.58860341, -0.58711862,\n",
       "        -0.58753478, -0.59077644, -0.58870833, -0.58735097, -0.60372782,\n",
       "        -0.59430245, -0.59309494]),\n",
       " 'split1_train_score': array([-0.5776944 , -0.57835727, -0.57886537, -0.50977958, -0.51497249,\n",
       "        -0.5195565 , -0.40342298, -0.42431164, -0.43780539, -0.27891784,\n",
       "        -0.3267008 , -0.35323855]),\n",
       " 'split2_test_score': array([-0.60088264, -0.60150559, -0.60085462, -0.59116004, -0.59049344,\n",
       "        -0.59051091, -0.58988073, -0.59093836, -0.58933699, -0.60362745,\n",
       "        -0.59947536, -0.59658088]),\n",
       " 'split2_train_score': array([-0.57701532, -0.57753864, -0.57782247, -0.50917911, -0.51487378,\n",
       "        -0.51820588, -0.40164719, -0.42239419, -0.437114  , -0.2791321 ,\n",
       "        -0.3256724 , -0.35528313]),\n",
       " 'split3_test_score': array([-0.60501324, -0.6038426 , -0.60388976, -0.59163042, -0.5925788 ,\n",
       "        -0.59075197, -0.59188663, -0.59197142, -0.59174862, -0.60714953,\n",
       "        -0.60354208, -0.59655849]),\n",
       " 'split3_train_score': array([-0.57606991, -0.57672765, -0.57705112, -0.51027671, -0.5146785 ,\n",
       "        -0.51799237, -0.40143246, -0.42357388, -0.4371958 , -0.27697306,\n",
       "        -0.32235688, -0.34924427]),\n",
       " 'split4_test_score': array([-0.6029316 , -0.60245028, -0.60273339, -0.59412088, -0.59368092,\n",
       "        -0.59382169, -0.59668302, -0.59336613, -0.59440382, -0.60971624,\n",
       "        -0.60230245, -0.60296113]),\n",
       " 'split4_train_score': array([-0.57597985, -0.57669681, -0.57723287, -0.50731964, -0.51314718,\n",
       "        -0.51773031, -0.40533574, -0.42460244, -0.43838419, -0.27832984,\n",
       "        -0.32150224, -0.35368836]),\n",
       " 'std_fit_time': array([  30.78543984,   75.26744319,   30.22260734,   96.69080822,\n",
       "          92.61011467,   49.14413027,  183.70730472,   74.31173294,\n",
       "          65.34385055,  211.6884458 ,  100.08741945,   49.56423584]),\n",
       " 'std_score_time': array([ 0.06335299,  0.05207936,  0.02688496,  0.09419345,  0.43801903,\n",
       "         0.0692952 ,  0.13419598,  0.07826768,  0.17996546,  0.24467673,\n",
       "         0.08231677,  0.1251811 ]),\n",
       " 'std_test_score': array([ 0.00339041,  0.00337613,  0.00312656,  0.00388759,  0.00382496,\n",
       "         0.00321127,  0.00434858,  0.00412199,  0.00399265,  0.00588902,\n",
       "         0.00413473,  0.00426261]),\n",
       " 'std_train_score': array([ 0.00108706,  0.00124125,  0.00104154,  0.00126214,  0.00094149,\n",
       "         0.00080795,  0.00147343,  0.00116343,  0.00087683,  0.00077791,\n",
       "         0.00199823,  0.00201194])}"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.589100 using {'max_depth': 7, 'min_child_weight': 5}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nIT4+PgyRRc6LL77ItGnTGNyEUQljYmJ48803SUxMpKKigh/+8IdMnTqVsWPHhjHStkFEiO7bl+i+\nfUm+9FIAKr75hqNOU1jxpiyK3ngDAFdSEvFnnllz8z528GAbqMu0mHD+TxoN7FPVzwFEZDkwA6ib\nSAIZDLytqpVApYhsA6YAzwAKdHLKdQb2hxro3S/vZNf+w6HuppbBPTtx10VD6l1/++2389lnnzFi\nxAgmTZpEt27deOaZZygrK2PmzJncfffdHD16lMsvv5zs7Gyqqqr4n//5Hw4cOMD+/fuZMGECXbt2\nZf369QH3n5iYyE9/+lNef/11UlJSuO+++/j1r3/NV199xcKFC5k+fTpffvklGRkZHD16FIC//OUv\nnHXWWaxcuZJFixaxbt06vvvuO84991w2bNjASQHedSgpKeHaa69l165dnHbaaZSUlNSsW7t2LXfd\ndRdlZWUMGDCAJ598ksTERPr168cVV1xRE/uyZcvIyclh1apVvP3229xzzz08//zzADz77LPcdNNN\nFBYW8o9//INzzjmn1vFFhMTERMD3SHdFRUWHvlfg6dWL5F69SL74YgAqvvvO90TYpk0Ub9xI0dtv\nA+CKjyfuzDOJHz2a+FHpxA0dirSBR6NN+xTORNIL+NpvPhsYE6DcpSIyDtgD/FxVvwa2AXeJyAIg\nHpjAsQR0PbBGREqAw0DAr54iMg+YB9C3b9/Qz6aF3X///ezYsYOtW7eydu1annvuOTZu3IiqMn36\ndDZs2EBubi49e/bkX//6FwCHDh2ic+fOLFiwgPXr19O1a9d693/06FHGjx/PAw88wMyZM7nzzjtZ\nt24du3bt4pprrmH69Ol069aNdevWERsby969e5k9ezZZWVnMnDmT559/nkWLFvHqq69y9913B0wi\nAI888gjx8fFs376d7du3c+aZZwJw8OBB7rnnHl5//XUSEhJ44IEHWLBgAb/73e8A6NSpExs3bmTx\n4sXceuutrF69munTpzNt2jQuu+yymv1XVlayceNG1qxZw913383rr7/O/v37uf7661mzZg0AVVVV\njBw5kn379vHTn/6UMWMC/TfrmDwnnUTni6bR+aJpAFTk5FCSlVVTa8ldsAAAiYsj/owRNU+FxQ4f\njis6OpKhm3YknIkk0NfCui+tvAw8raplIvIT4ClgoqquFZFRwPtALvBvoNLZ5ufABar6oYj8CliA\n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\nyf8P9kFL19lNuFYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd675278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_1.best_score_, gsearch2_1.best_params_))\n",
    "test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_1.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(max_depth), len(min_child_weight))\n",
    "train_scores = np.array(train_means).reshape(len(max_depth), len(min_child_weight))\n",
    "\n",
    "for i, value in enumerate(max_depth):\n",
    "    pyplot.plot(min_child_weight, -test_scores[i], label= 'test_max_depth:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': [6, 7, 8], 'min_child_weight': [4, 5, 6]}"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = [6,7,8]\n",
    "min_child_weight = [4,5,6]\n",
    "param_test2_2 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58910, std: 0.00395, params: {'max_depth': 6, 'min_child_weight': 4},\n",
       "  mean: -0.58901, std: 0.00363, params: {'max_depth': 6, 'min_child_weight': 5},\n",
       "  mean: -0.58840, std: 0.00364, params: {'max_depth': 6, 'min_child_weight': 6},\n",
       "  mean: -0.58827, std: 0.00412, params: {'max_depth': 7, 'min_child_weight': 4},\n",
       "  mean: -0.58910, std: 0.00399, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.58873, std: 0.00397, params: {'max_depth': 7, 'min_child_weight': 6},\n",
       "  mean: -0.59304, std: 0.00395, params: {'max_depth': 8, 'min_child_weight': 4},\n",
       "  mean: -0.59431, std: 0.00379, params: {'max_depth': 8, 'min_child_weight': 5},\n",
       "  mean: -0.59199, std: 0.00339, params: {'max_depth': 8, 'min_child_weight': 6}],\n",
       " {'max_depth': 7, 'min_child_weight': 4},\n",
       " -0.58826578950051067)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_2 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=235,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=7,\n",
    "        min_child_weight=5,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_2 = GridSearchCV(xgb2_2, param_grid = param_test2_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_2.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_2.grid_scores_, gsearch2_2.best_params_,     gsearch2_2.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 283.30284009,  256.99764004,  227.38123994,  320.66792002,\n",
       "         323.37148008,  264.88639998,  398.91719999,  304.14803991,\n",
       "         218.27592006]),\n",
       " 'mean_score_time': array([ 0.39400001,  0.41636004,  0.36904006,  0.4256    ,  0.44431996,\n",
       "         0.33239994,  0.37827997,  0.44328008,  0.25699997]),\n",
       " 'mean_test_score': array([-0.58909757, -0.58900561, -0.58839885, -0.58826579, -0.58910014,\n",
       "        -0.5887312 , -0.59303762, -0.59431362, -0.59199154]),\n",
       " 'mean_train_score': array([-0.47572072, -0.47910493, -0.48215241, -0.43238904, -0.43799833,\n",
       "        -0.44268141, -0.38557081, -0.394559  , -0.40161391]),\n",
       " 'param_max_depth': masked_array(data = [6 6 6 7 7 7 8 8 8],\n",
       "              mask = [False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_min_child_weight': masked_array(data = [4 5 6 4 5 6 4 5 6],\n",
       "              mask = [False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'max_depth': 6, 'min_child_weight': 4},\n",
       "  {'max_depth': 6, 'min_child_weight': 5},\n",
       "  {'max_depth': 6, 'min_child_weight': 6},\n",
       "  {'max_depth': 7, 'min_child_weight': 4},\n",
       "  {'max_depth': 7, 'min_child_weight': 5},\n",
       "  {'max_depth': 7, 'min_child_weight': 6},\n",
       "  {'max_depth': 8, 'min_child_weight': 4},\n",
       "  {'max_depth': 8, 'min_child_weight': 5},\n",
       "  {'max_depth': 8, 'min_child_weight': 6}],\n",
       " 'rank_test_score': array([5, 4, 2, 1, 6, 3, 8, 9, 7]),\n",
       " 'split0_test_score': array([-0.58256313, -0.58261986, -0.58242595, -0.58050635, -0.5826619 ,\n",
       "        -0.58186117, -0.58674753, -0.58800619, -0.58632945]),\n",
       " 'split0_train_score': array([-0.47735588, -0.48075264, -0.48431394, -0.43253332, -0.43949229,\n",
       "        -0.444903  , -0.38535248, -0.39448277, -0.40174046]),\n",
       " 'split1_test_score': array([-0.58787338, -0.58847247, -0.58757063, -0.58812114, -0.58735097,\n",
       "        -0.58810883, -0.59111804, -0.59458905, -0.59194995]),\n",
       " 'split1_train_score': array([-0.47517258, -0.47816835, -0.48038133, -0.43226242, -0.43780539,\n",
       "        -0.44376982, -0.38637777, -0.39410282, -0.40160423]),\n",
       " 'split2_test_score': array([-0.5891384 , -0.59000311, -0.58939461, -0.59037842, -0.58933699,\n",
       "        -0.58934822, -0.59365998, -0.59282289, -0.59214413]),\n",
       " 'split2_train_score': array([-0.47603783, -0.47923687, -0.48280614, -0.43114949, -0.437114  ,\n",
       "        -0.44117276, -0.38751737, -0.3972974 , -0.40533706]),\n",
       " 'split3_test_score': array([-0.59153294, -0.59017664, -0.58886754, -0.58984839, -0.59174862,\n",
       "        -0.59029921, -0.59517166, -0.59718425, -0.59253622]),\n",
       " 'split3_train_score': array([-0.47429968, -0.47786212, -0.48053732, -0.43095987, -0.4371958 ,\n",
       "        -0.44004961, -0.38267835, -0.3922813 , -0.39792302]),\n",
       " 'split4_test_score': array([-0.5943816 , -0.5937574 , -0.59373715, -0.59247592, -0.59440382,\n",
       "        -0.59404017, -0.59849255, -0.59896715, -0.59699945]),\n",
       " 'split4_train_score': array([-0.47573765, -0.47950466, -0.48272334, -0.4350401 , -0.43838419,\n",
       "        -0.44351186, -0.38592808, -0.39463073, -0.40146479]),\n",
       " 'std_fit_time': array([ 109.93102399,  138.6670935 ,   64.89634713,  137.99582729,\n",
       "         148.40657299,   77.24984527,  166.33198741,   88.7510166 ,\n",
       "          24.79465742]),\n",
       " 'std_score_time': array([ 0.08233597,  0.07382601,  0.06776914,  0.09480421,  0.13421754,\n",
       "         0.01623081,  0.14121581,  0.12061861,  0.05814446]),\n",
       " 'std_test_score': array([ 0.00395089,  0.00363332,  0.00363498,  0.00412123,  0.00399265,\n",
       "         0.00396498,  0.00394825,  0.00379409,  0.00338987]),\n",
       " 'std_train_score': array([ 0.00100939,  0.00103091,  0.00149471,  0.00145904,  0.00087683,\n",
       "         0.00178953,  0.00161133,  0.0016066 ,  0.00234618])}"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_2.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.588266 using {'max_depth': 7, 'min_child_weight': 4}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd6ec6a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_2.best_score_, gsearch2_2.best_params_))\n",
    "test_means = gsearch2_2.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_2.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_2.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_2.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_2.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_2.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(min_child_weight), len(max_depth))\n",
    "train_scores = np.array(train_means).reshape(len(min_child_weight), len(max_depth))\n",
    "\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    pyplot.plot(max_depth, test_scores[i], label= 'test_min_child_weight:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( '- Log Loss' )\n",
    "pyplot.savefig( 'max_depth_vs_min_child_weght2.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 再次调整弱学习器数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def modelfit(alg, X_train, y_train, useTrainCV=True, cv_folds=None, early_stopping_rounds=100):\n",
    "    \n",
    "    if useTrainCV:\n",
    "        xgb_param = alg.get_xgb_params()\n",
    "        xgb_param['num_class'] = 9\n",
    "        \n",
    "        xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "        cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "                         metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "        \n",
    "        n_estimators = cvresult.shape[0]\n",
    "        alg.set_params(n_estimators = n_estimators)\n",
    "        \n",
    "        print (cvresult)\n",
    "        #result = pd.DataFrame(cvresult)   #cv缺省返回结果为DataFrame\n",
    "        #result.to_csv('my_preds.csv', index_label = 'n_estimators')\n",
    "        cvresult.to_csv('my_preds4_2_3_699.csv', index_label = 'n_estimators')\n",
    "        \n",
    "        # plot\n",
    "        test_means = cvresult['test-mlogloss-mean']\n",
    "        test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "        train_means = cvresult['train-mlogloss-mean']\n",
    "        train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "        x_axis = range(0, n_estimators)\n",
    "        pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "        pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "        pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "        pyplot.xlabel( 'n_estimators' )\n",
    "        pyplot.ylabel( 'Log Loss' )\n",
    "        pyplot.savefig( 'n_estimators4_2_3_699.png' )\n",
    "    \n",
    "    #Fit the algorithm on the data\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "        \n",
    "    #Print model report:\n",
    "    print (\"logloss of train :\" )\n",
    "    print (logloss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
      "0              1.954153           0.000314             1.951765   \n",
      "1              1.780397           0.000964             1.775370   \n",
      "2              1.643926           0.000618             1.636771   \n",
      "3              1.531328           0.001504             1.522040   \n",
      "4              1.436626           0.001175             1.425525   \n",
      "5              1.355918           0.001726             1.343062   \n",
      "6              1.285932           0.001891             1.271335   \n",
      "7              1.224904           0.001989             1.208961   \n",
      "8              1.170865           0.002134             1.153159   \n",
      "9              1.122908           0.002344             1.103920   \n",
      "10             1.079954           0.002404             1.059702   \n",
      "11             1.041212           0.002394             1.019700   \n",
      "12             1.006704           0.002393             0.983881   \n",
      "13             0.975543           0.002087             0.951468   \n",
      "14             0.947093           0.002036             0.921950   \n",
      "15             0.921135           0.001904             0.894921   \n",
      "16             0.897785           0.002232             0.870402   \n",
      "17             0.876561           0.002632             0.847890   \n",
      "18             0.857342           0.002725             0.827674   \n",
      "19             0.839828           0.002972             0.809069   \n",
      "20             0.823420           0.003116             0.791406   \n",
      "21             0.808653           0.002963             0.775512   \n",
      "22             0.794990           0.002951             0.760818   \n",
      "23             0.782333           0.002924             0.747166   \n",
      "24             0.770508           0.002985             0.734424   \n",
      "25             0.759599           0.003470             0.722466   \n",
      "26             0.749690           0.003565             0.711475   \n",
      "27             0.740295           0.003506             0.701183   \n",
      "28             0.731783           0.003554             0.691579   \n",
      "29             0.723739           0.003560             0.682409   \n",
      "..                  ...                ...                  ...   \n",
      "205            0.597372           0.002906             0.431026   \n",
      "206            0.597453           0.003045             0.430507   \n",
      "207            0.597339           0.003062             0.429914   \n",
      "208            0.597320           0.003081             0.429386   \n",
      "209            0.597379           0.003170             0.428893   \n",
      "210            0.597428           0.003240             0.428300   \n",
      "211            0.597436           0.003231             0.427785   \n",
      "212            0.597376           0.003326             0.427220   \n",
      "213            0.597296           0.003257             0.426633   \n",
      "214            0.597293           0.003199             0.426034   \n",
      "215            0.597318           0.003134             0.425550   \n",
      "216            0.597458           0.003108             0.424886   \n",
      "217            0.597598           0.003064             0.424281   \n",
      "218            0.597669           0.003098             0.423715   \n",
      "219            0.597735           0.003110             0.423122   \n",
      "220            0.597735           0.003195             0.422570   \n",
      "221            0.597742           0.003147             0.422130   \n",
      "222            0.597756           0.003163             0.421616   \n",
      "223            0.597832           0.003238             0.421065   \n",
      "224            0.597984           0.003242             0.420572   \n",
      "225            0.598048           0.003264             0.420025   \n",
      "226            0.598164           0.003322             0.419498   \n",
      "227            0.598259           0.003359             0.419003   \n",
      "228            0.598253           0.003440             0.418406   \n",
      "229            0.598363           0.003494             0.417873   \n",
      "230            0.598377           0.003500             0.417258   \n",
      "231            0.598455           0.003495             0.416823   \n",
      "232            0.598418           0.003528             0.416343   \n",
      "233            0.598365           0.003460             0.415708   \n",
      "234            0.598501           0.003516             0.415273   \n",
      "\n",
      "     train-mlogloss-std  \n",
      "0              0.000693  \n",
      "1              0.001554  \n",
      "2              0.001729  \n",
      "3              0.001468  \n",
      "4              0.002416  \n",
      "5              0.002208  \n",
      "6              0.002265  \n",
      "7              0.002206  \n",
      "8              0.002341  \n",
      "9              0.002271  \n",
      "10             0.002251  \n",
      "11             0.002498  \n",
      "12             0.002446  \n",
      "13             0.002602  \n",
      "14             0.002735  \n",
      "15             0.003124  \n",
      "16             0.002765  \n",
      "17             0.002651  \n",
      "18             0.002559  \n",
      "19             0.002281  \n",
      "20             0.002147  \n",
      "21             0.002123  \n",
      "22             0.002248  \n",
      "23             0.002317  \n",
      "24             0.002012  \n",
      "25             0.001909  \n",
      "26             0.001902  \n",
      "27             0.002075  \n",
      "28             0.002079  \n",
      "29             0.001907  \n",
      "..                  ...  \n",
      "205            0.000395  \n",
      "206            0.000455  \n",
      "207            0.000453  \n",
      "208            0.000507  \n",
      "209            0.000500  \n",
      "210            0.000491  \n",
      "211            0.000382  \n",
      "212            0.000412  \n",
      "213            0.000506  \n",
      "214            0.000394  \n",
      "215            0.000380  \n",
      "216            0.000371  \n",
      "217            0.000400  \n",
      "218            0.000470  \n",
      "219            0.000449  \n",
      "220            0.000487  \n",
      "221            0.000472  \n",
      "222            0.000486  \n",
      "223            0.000717  \n",
      "224            0.000656  \n",
      "225            0.000580  \n",
      "226            0.000604  \n",
      "227            0.000642  \n",
      "228            0.000665  \n",
      "229            0.000593  \n",
      "230            0.000678  \n",
      "231            0.000711  \n",
      "232            0.000678  \n",
      "233            0.000592  \n",
      "234            0.000693  \n",
      "\n",
      "[235 rows x 4 columns]\n",
      "logloss of train :\n",
      "0.448262243823\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd6f1c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#调整max_depth和min_child_weight之后再次调整n_estimators(6,4)\n",
    "xgb2_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=235,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=7,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb2_3, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nDskIizRJkiSVhRhh0lh45XaYcDfMyasxllsH1tsPRv81Ofb5tUZZpGWERZokSZLKzsxv4C9rJPsd\nu8D8OfXP73MJbHgYdOpa/NwyzCItIyzSJEmSVNZmVyezQ75+F7z/RBrv2icp1F64Kjm2u+bEIZIk\nSZKKYKleMPQHcOhtaaznyjDru7RAg2Qh7bmzi59fGbOTViA7aZIkSao4C+bDuyNhzDXwwag03qUX\nrLcvvJIr6Cqsu2YnTZIkSVJpdOgIA/eEw25PYz1XhjnVaYEG8OK1MGtq8fMrExZpkiRJkgp36hg4\n4gEYcnAae2w4XDQIHjoLPhvv2mst5HDHAjncUZIkScqTv/ba8uvC128tfM2Zr0Pv/vWvLYOhka09\n3LFqyVOSJEmSVPE6d4Ph1cl+jPDR6OTZtbf/A3FBEr90Q1h1C1hrp9Ll2Q7YSSuQnTRJkiSpGb56\nC67cvOnzW58JGxwCvQfA+SsnsXbWXbOTJkmSJKn96L1qun/qi/Dh0/Dmg/DhU0ns2UuSbdm1SpNf\nBtlJK5CdNEmSJKlA+c+krbM7vD8K5tem5wdsA1udDmvvBh2yP9ehnTRJkiRJ5eOgG5P11ybeDw+c\nlsQ+fibZllkDvv0gibWzIZBLIvtlqSRJkqTyUjfJyPDqZH+pnjD4gPT85iclC2TXFWgAD56RFHJz\npieduDKe1t/hjgVyuKMkSZLUhuZMh7E3wH/PrR/v2BkGbAUfPJkcZ6DD1trDHe2kSZIkScqeLj1g\n0+PS481OTIY/zq9NC7Qy5TNpkiRJkrIpf+01SNZfm/IuTLwPRv2pdHm1MTtpkiRJktqHEGD5dWDL\nU0udSZuykyZJkiSpfWnYYSszdtIkSZIkKUMs0iRJkiQpQyzSJEmSJClDLNIkSZIkKUMs0iRJkiQp\nQyzSJEmSJClDLNIkSZIkKUMs0iRJkiQpQyzSJEmSJClDLNIkSZIkKUMs0iRJkiQpQyzSJEmSJClD\nLNIkSZIkKUMs0iRJkiQpQyzSJEmSJClDLNIkSZIkKUMs0iRJkiQpQyzSJEmSJClDLNIkSZIkKUMs\n0iRJkiQpQyzSJEmSJClDLNIkSZIkKUMs0iRJkiQpQyzSJEmSJClDLNIkSZIkKUMs0iRJkiQpQyzS\nJEmSJClDLNIkSZIkKUMs0iRJkiQpQyzSJEmSJClDLNIkSZIkKUMs0iRJkiQpQyzSJEmSJClDqkqd\n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\nxWRhIA4gx/oAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd897f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('my_preds4_2_3_699.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail4_2_3_699.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最佳的弱学习器数目依旧是234"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 调整树的参数：subsample 和 colsample_bytree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.6, 0.7, 0.8, 0.9],\n",
       " 'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test3_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test3_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58908, std: 0.00359, params: {'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  mean: -0.58551, std: 0.00322, params: {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  mean: -0.58434, std: 0.00379, params: {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  mean: -0.58305, std: 0.00514, params: {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  mean: -0.58098, std: 0.00397, params: {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  mean: -0.58098, std: 0.00418, params: {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  mean: -0.59016, std: 0.00385, params: {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  mean: -0.58641, std: 0.00352, params: {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  mean: -0.58414, std: 0.00397, params: {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  mean: -0.58228, std: 0.00371, params: {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  mean: -0.58143, std: 0.00338, params: {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  mean: -0.57925, std: 0.00327, params: {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  mean: -0.58826, std: 0.00409, params: {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  mean: -0.58675, std: 0.00405, params: {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  mean: -0.58422, std: 0.00402, params: {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  mean: -0.58271, std: 0.00485, params: {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  mean: -0.58188, std: 0.00386, params: {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  mean: -0.58069, std: 0.00407, params: {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  mean: -0.59105, std: 0.00283, params: {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  mean: -0.58740, std: 0.00345, params: {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  mean: -0.58444, std: 0.00431, params: {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  mean: -0.58301, std: 0.00445, params: {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  mean: -0.58244, std: 0.00376, params: {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  mean: -0.58106, std: 0.00452, params: {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       " -0.5792493077749592)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb3_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=234,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=7,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test3_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_,     gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 300.82935996,  237.09935999,  280.82859998,  329.81272011,\n",
       "         262.24196   ,  257.45012002,  241.27519999,  367.53840013,\n",
       "         303.52432017,  322.63883991,  368.07259998,  291.91824002,\n",
       "         280.70152001,  351.68643999,  405.04392009,  390.9373601 ,\n",
       "         289.23484011,  424.03867998,  309.75527997,  346.47320008,\n",
       "         508.74632001,  379.50632   ,  384.1368    ,  257.78379998]),\n",
       " 'mean_score_time': array([ 0.49616003,  0.36160002,  0.46592002,  0.39099994,  0.31160002,\n",
       "         0.36535997,  0.4638    ,  0.49003997,  0.38483996,  0.51976004,\n",
       "         0.47239995,  0.3980401 ,  0.44239998,  0.49888   ,  0.42663999,\n",
       "         0.41960006,  0.3611999 ,  0.46279998,  0.31440001,  0.4967999 ,\n",
       "         0.48620005,  0.36980004,  0.36340003,  0.31339993]),\n",
       " 'mean_test_score': array([-0.58907686, -0.58550763, -0.5843387 , -0.58304836, -0.58098285,\n",
       "        -0.5809801 , -0.59016383, -0.58640549, -0.58414352, -0.58227695,\n",
       "        -0.58142992, -0.57924931, -0.58825546, -0.58675355, -0.5842221 ,\n",
       "        -0.5827129 , -0.5818786 , -0.58069255, -0.59105451, -0.58739568,\n",
       "        -0.58444289, -0.58301266, -0.58244038, -0.5810591 ]),\n",
       " 'mean_train_score': array([-0.44054749, -0.43129084, -0.42531536, -0.42218649, -0.41936123,\n",
       "        -0.41954723, -0.43650781, -0.42678237, -0.42012296, -0.41778675,\n",
       "        -0.41588179, -0.41540446, -0.43282875, -0.42185809, -0.41584614,\n",
       "        -0.41252524, -0.41067682, -0.41160828, -0.42903621, -0.41790247,\n",
       "        -0.412381  , -0.40930646, -0.4079229 , -0.40861849]),\n",
       " 'param_colsample_bytree': masked_array(data = [0.6 0.6 0.6 0.6 0.6 0.6 0.7 0.7 0.7 0.7 0.7 0.7 0.8 0.8 0.8 0.8 0.8 0.8\n",
       "  0.9 0.9 0.9 0.9 0.9 0.9],\n",
       "              mask = [False False False False False False False False False False False False\n",
       "  False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_subsample': masked_array(data = [0.3 0.4 0.5 0.6 0.7 0.8 0.3 0.4 0.5 0.6 0.7 0.8 0.3 0.4 0.5 0.6 0.7 0.8\n",
       "  0.3 0.4 0.5 0.6 0.7 0.8],\n",
       "              mask = [False False False False False False False False False False False False\n",
       "  False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " 'rank_test_score': array([22, 17, 15, 12,  4,  3, 23, 18, 13,  8,  6,  1, 21, 19, 14, 10,  7,\n",
       "         2, 24, 20, 16, 11,  9,  5]),\n",
       " 'split0_test_score': array([-0.58453259, -0.58068275, -0.57742246, -0.57395644, -0.57503935,\n",
       "        -0.57469276, -0.58306489, -0.58105321, -0.57685347, -0.57575667,\n",
       "        -0.57512465, -0.57455355, -0.58057425, -0.58059411, -0.57813535,\n",
       "        -0.57497724, -0.57595571, -0.57367085, -0.58606912, -0.58159142,\n",
       "        -0.5773633 , -0.57596905, -0.57550282, -0.57320007]),\n",
       " 'split0_train_score': array([-0.44280101, -0.43371727, -0.42790744, -0.42530798, -0.42140122,\n",
       "        -0.42199935, -0.44083991, -0.42979719, -0.42299941, -0.42196366,\n",
       "        -0.41814051, -0.41729655, -0.4329595 , -0.42300084, -0.41725195,\n",
       "        -0.41288262, -0.41035732, -0.41217549, -0.43190229, -0.41784461,\n",
       "        -0.41304834, -0.40835307, -0.4107709 , -0.40714468]),\n",
       " 'split1_test_score': array([-0.58536265, -0.58362275, -0.58431631, -0.58190735, -0.57837848,\n",
       "        -0.57886714, -0.58991961, -0.584251  , -0.58348934, -0.58177259,\n",
       "        -0.58197345, -0.57745239, -0.58812618, -0.58348456, -0.58184978,\n",
       "        -0.5817808 , -0.57982591, -0.57940953, -0.59036363, -0.58709408,\n",
       "        -0.58327491, -0.58043521, -0.5814324 , -0.58008495]),\n",
       " 'split1_train_score': array([-0.4392011 , -0.42950678, -0.42357431, -0.42009014, -0.41995723,\n",
       "        -0.41936866, -0.43568601, -0.42525732, -0.41899126, -0.41651022,\n",
       "        -0.41525971, -0.41503133, -0.43263264, -0.42333035, -0.41469274,\n",
       "        -0.41144841, -0.41070554, -0.41046238, -0.42934688, -0.41815655,\n",
       "        -0.41304841, -0.41035079, -0.40685684, -0.41061145]),\n",
       " 'split2_test_score': array([-0.58960917, -0.58724686, -0.58479224, -0.58400984, -0.58128019,\n",
       "        -0.58012787, -0.59223847, -0.58659561, -0.58532161, -0.58306647,\n",
       "        -0.582287  , -0.57846182, -0.59019967, -0.58866817, -0.5841157 ,\n",
       "        -0.58143189, -0.58148833, -0.58114753, -0.59171697, -0.58932335,\n",
       "        -0.58399796, -0.58382766, -0.58488631, -0.58115365]),\n",
       " 'split2_train_score': array([-0.44065477, -0.43185324, -0.42504763, -0.42151677, -0.41846371,\n",
       "        -0.41859651, -0.4347321 , -0.42807919, -0.42082043, -0.41838805,\n",
       "        -0.41684821, -0.41682384, -0.43160941, -0.42218525, -0.41778671,\n",
       "        -0.41386181, -0.41040551, -0.41117502, -0.4273197 , -0.41677509,\n",
       "        -0.41098835, -0.40952486, -0.4083524 , -0.408781  ]),\n",
       " 'split3_test_score': array([-0.59286485, -0.58581745, -0.58643774, -0.58625005, -0.58397104,\n",
       "        -0.58560115, -0.59114397, -0.58912852, -0.58680119, -0.58366   ,\n",
       "        -0.58241594, -0.5821919 , -0.58982191, -0.58966663, -0.58765092,\n",
       "        -0.5860159 , -0.58592938, -0.58403278, -0.59263998, -0.5869152 ,\n",
       "        -0.58752232, -0.58611911, -0.58469637, -0.58463125]),\n",
       " 'split3_train_score': array([-0.44044768, -0.43070672, -0.42622355, -0.42062559, -0.41963883,\n",
       "        -0.42063479, -0.43579518, -0.42543113, -0.41869448, -0.41715429,\n",
       "        -0.41675228, -0.41541847, -0.43147086, -0.41887141, -0.41330167,\n",
       "        -0.41202641, -0.41000395, -0.41198945, -0.42760873, -0.41899292,\n",
       "        -0.41239437, -0.40995352, -0.40709369, -0.40821022]),\n",
       " 'split4_test_score': array([-0.59301627, -0.59016976, -0.58872607, -0.58911997, -0.58624679,\n",
       "        -0.58561297, -0.5944535 , -0.59100051, -0.58825326, -0.58713048,\n",
       "        -0.58534976, -0.58358819, -0.5925566 , -0.59135567, -0.58936032,\n",
       "        -0.58936068, -0.58619498, -0.58520343, -0.59448391, -0.59205574,\n",
       "        -0.59005766, -0.58871399, -0.58568499, -0.58622714]),\n",
       " 'split4_train_score': array([-0.43963287, -0.4306702 , -0.42382389, -0.42339196, -0.41734518,\n",
       "        -0.41713684, -0.43548585, -0.42534702, -0.41910924, -0.41491755,\n",
       "        -0.41240823, -0.41245209, -0.43547134, -0.42190261, -0.41619762,\n",
       "        -0.41240694, -0.41191177, -0.41223905, -0.42900347, -0.41774318,\n",
       "        -0.41242554, -0.40835005, -0.40654068, -0.40834509]),\n",
       " 'std_fit_time': array([ 156.64807911,   44.90765464,   61.89455985,  143.74740664,\n",
       "          60.50215715,   70.85464781,   72.59703422,  174.38289502,\n",
       "          68.98352352,   89.95625733,  151.61375548,   84.24437252,\n",
       "          65.25472067,  103.30838331,  193.63431298,   95.27475931,\n",
       "          79.33796894,  171.5231606 ,  115.54409965,   79.69013568,\n",
       "         217.83571301,   89.5160954 ,  102.97009556,   89.74529184]),\n",
       " 'std_score_time': array([ 0.13339888,  0.06325367,  0.09971398,  0.15916281,  0.02217747,\n",
       "         0.11139492,  0.05942867,  0.17366431,  0.04157923,  0.13015846,\n",
       "         0.14814675,  0.1256509 ,  0.15284122,  0.11180102,  0.12480183,\n",
       "         0.1458364 ,  0.03104452,  0.17696149,  0.02563274,  0.14285007,\n",
       "         0.13658165,  0.14350797,  0.08228389,  0.10770447]),\n",
       " 'std_test_score': array([ 0.00359433,  0.00321512,  0.00378666,  0.00513812,  0.00397067,\n",
       "         0.00418421,  0.00385019,  0.00351714,  0.00397274,  0.00371102,\n",
       "         0.00338002,  0.00326746,  0.00409269,  0.00404858,  0.00402101,\n",
       "         0.00484658,  0.00385967,  0.00406599,  0.00282997,  0.00344791,\n",
       "         0.00430552,  0.00445132,  0.00376155,  0.00452083]),\n",
       " 'std_train_score': array([ 0.00124492,  0.00142219,  0.00160444,  0.00192232,  0.00137578,\n",
       "         0.00166981,  0.00219763,  0.00184297,  0.00161922,  0.00236939,\n",
       "         0.00196194,  0.00170003,  0.0014401 ,  0.00158131,  0.0016535 ,\n",
       "         0.00081689,  0.00065641,  0.00068785,  0.00163071,  0.00071461,\n",
       "         0.00075265,  0.00082227,  0.00155114,  0.00113242])}"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch3_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.579249 using {'colsample_bytree': 0.7, 'subsample': 0.8}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nUspMYAXwYEKY/EnABDACjAFDIAEQuq+quhlKDeCxJJyqalgV38a+rO69miXeS+hg34Hg8GBeWvcS\nw7cOZ9ulbWRp/le4ythAn7mDW9KjuQ1fbjzL/H2RxTipFfithxq2sKwfXDletOZt2lB33jyyYq8Q\nHRBAti7/kfJ0UvVI7lfZ65GcPXuWjh07YmBgQNWqVXFzc2PLli0PvcZik1KWyRfQD1iQ5+chwJz/\nHBMAxKOdWawG6uZ5bzqQDKQAU//T7y1du32AfgHnHwUcA445ODjIsnD9znX5a+ivsltwN+kc6Cy9\nVnrJOSfmyPjU+NxjMrNz5FvLj0vHcRvlnF0RxTtRcqyUM1yk/MZByriTRW6eevCgDHNzl5G9+8is\npKTijUEpsbNnz+Z+Hz91qrz02pBS/YqfOvWh54+KipLNmzeXUkq5detWOXLkSKnRaGROTo7s2bOn\n3Lt3r1y9erUcMWJEbpvk5GQppZSOjo4yMTGxwL6vXbsm7e3t5cWLF6WUUibpfs9Gjx4tp0yZIqWU\ncufOndLNzU1KKeXixYvl22+/LaWU0tnZWcbGxkoppbx586aUUsq0tDSZnp4upZQyPDxctmrVSkop\n5e7du6WZmZmMi4uTGRkZsk6dOvKzzz6TUko5c+ZMOWbMGCmllP7+/rJ79+4yJydHhoeHSzs7O5me\nni53794te/bsKaWUcsKECXLp0qW553VycpKpqan5Xt/ixYuljY2NvH79urxz545s3ry5PHr0qIyK\nipItWrSQUkqZk5MjGzRoIK9fv37fee61t7Ozy/1cCvr8z549K3v16iUzMzOllFK++eabMigoSEop\n5fDhw+XRo0ellFKamZndNz5zc/MHxrx161b57LPPyrS0NJmYmCjr168vp0+fXtB/wvt+P+8BjslC\n/L0vyxlJfvnR/7tSvQGoJ7W3qXYAQQBCiGeApoA9YAd0EkJ0EEIYAm8CLYA6aAPQhPxOLqWcL6Vs\nLaVsbW1tXRrX84CaVWoywmUEf/n8xZxOc2hi2YRfTv5CjzU9eH/3+xyMO4iBnmDWAHdecq/D91vP\nM2tHRNFPZGYH/hvAqBosfRmuhRWpeVVPT+r+/BOZly9rd3MVcD9VeXqoeiSVvx5Jt27dePHFF3n2\n2WcZNGgQ7dq1w8CgbCqHlGU9kligbp6f7fnPbSgpZd4b978C3+q+fwU4JKVMBRBCbAY8gXRdu0jd\n66uABxbxHzd9PX061u1Ix7odibkdQ3B4MH9G/MmO6B3Uq1EP38a+THmpD/p6ghk7wsnRaHi/a6N8\n6zcUyMIR/NfD4hchqA8M3QxWzxS6edV27aj780/EvPkW0QFDcQhcjIGFRTGuVikNNp98Uq7nl6oe\nSaWvRwLaW20TJ04EYPDgwWVRkt6oAAAgAElEQVSWD6wsZyRHASchRH0hhBEwEFif9wAhRN7kVH2A\ne//Ujka3uK6bhXTUvXcFaCaEuDfF6JqnTYVQt3pdPmj1ATv67+Dr577GzNiM745+R7c1Xahm9wfd\nW2Tx464LfL/1/EO3EuerZkNtMJEaCOoNN4q2iF/12Wex/2kumVFRRA8brmYmTxlVj+TpqkeSk5ND\nkm6TTWhoKKGhobmzt9JWZjMSKWW2EGI0sBXQBxZJKc8IIb5Ae99tPfCuEKIPkA3cQLtmAtr1kk7A\nKbS3w7ZIKTcACCE+B/YJIbKAy3naVCjG+sb0btib3g17E5YUxsrzK/kr6i/Ss/+kbvOGzD/Rkoyc\nl5j0omvRZibWjcFvHQT1giV9IOAvMK/76HY61dq3x/6nn4h96y2ihw/HcdEi9M3Ni3GFypMmbz0S\nb2/v3HoYANWqVWPZsmVcuHCBsWPHoqenh6GhIT///DPwv3oktra27N69+4G+89Yj0Wg0uTXXp0yZ\nwtChQ3F1dcXU1LTAeiQRERFIKencuXNuPZK+ffsSHByMl5dXieqRJCQkFFiP5L333sPV1RUpJfXq\n1ct3Uf6ee/VILly4wODBgx+oR2Jubp5vPZKAgAAs/jP779atG2FhYQ98/nnrkWg0GgwNDZk7dy6O\njo731WwfP348vr6+LFy4EAcHB4KDgwFtPZJ58+axYMECsrKyeP755wGoUaMGy5YtK7NbWypp42N0\nO/M26yPXs/LcSqJuRSGzTWlUzYsZPd7E0cyxaJ3FndDe4qpqpQ0mNYqWeTj17/3Evv02Rs80VMHk\nMVFJGx8fVY+k6FTSxidEdaPqvNr0Vda9vI6F3RZS19SV8PTN9Frbi9e3v86u6F1kawq5x7xOC3ht\nDdxOgCUvQWrR0qFUe/457OfMJjPiAtHDR5DznwVQRVEeTdUj0VIzknIkpWTSxgOsOr8as1rHyZA3\nsalqQ/9G/fFx8sGqSiEe2r+0X/uMSc2G2p1dppZFGkPq3r3Ejn4H48aNcVi0EP3/3L9WSk9lmZGo\neiSVk6pH8ggVNZCANph8t/U8P+8Jp6N7IkYWhzh09RAGegZ0deiKb2NfWtVu9fB1lMhd2qffazXV\nLsabFG7L5j239+wh9p13MWnSBIeFC1QwKSOVJZAolZO6tfUEE0LwcffGvNupMXtDbKiRMpq1fdYx\nsPFA9l/Zz9CtQ/FZ78OKcytIzUzNv5OGncB3CSSc0c5O7ha8WyQ/1V94AftZs8g4d47oESPJechu\nE6VknoZ/uClPnpL+XqoZSQUya0cEM3aE87J7Hab3dyNL3mVL1BZ+P/c7YTfCMDUwpVeDXgxoMoBG\nFo0e7ODseggOAAdPeHW1Ni19EdzetYvYMe9hXM8R+7lzMXJwKJ0LUwCIioqievXq1KxZs2g79RSl\nDEkpSUpK4vbt27kPlN6jbm3l8aQEEoC5u7XPmPRytWXGAHcM9fWQUnL6+mlWnl/JlktbuJtzl5a1\nWjKg8QC6OHbBSN/ofx2cWg1rRkCDF7S1TQxNCjpVvtIOHeLKmPeQgN0P/0c13V55peSysrKIjY0l\nIyOjvIeiKPcxMTHB3t4eQ0PD+15XgSSPJymQAPyyN5JvNp/D29mGWQNbYGTwvzuQyRnJrItcx8rz\nK4m5HYOliSU+Tj70b9SfOtV09eJPLId1b4FTd23VRQOjAs6Uv8yYGGLfHs3dCxeo9fFYLP391b+g\nFeUppAJJHk9aIAFY8PdFvtoURtdmtZk7uOV9wQS0hbcOxR1ixfkV7I3di5SSjvYd8W3sS3u79ugd\nD4SN70PT3tAvEPSL9iCSJi2NuAmfcHvbNsxeegmbLz5HL09qCkVRKj8VSPJ4EgMJQNCBS0xef4bO\nTWrx02stMTbQz/e4+NR4gsOD+SPiD5IykrCvZo9vY19eTr6JxY7Pwbkf+MwHvfzbF0RqNFyfN4/r\nP87GxMUF+zmzMaxduzQuTVGUJ4AKJHk8qYEEYNmhy3y69jQdG1nzy5BWmBgWHAyycrLYGb2TFedX\ncDzhOEZ6RnQ3rcuA8H9wbdIP8dJc0Cv6Rr3bO3cSN/ZjRFVT7H/8EdMWLUpySYqiPCFUIMnjSQ4k\nACuORDPhz1O0b2jFr36tqWL06JlFxM0IVp1fxYaLG0jLSqPp3UwGWLrh3WcxpkZFz1t0NyKCmLdH\nkx0fj82UyZj37VucS1EU5QmiAkkeT3ogAVh9PJaxq0/iWb8mCwNaY2pUuDWPtKw0NkVuZMXxH4nI\nvkV1YUCfxr74NhlAA7MGRRpDTnIyVz74kLQDB7B47TVqj/sY8Z9dHoqiVB4qkORRGQIJwNoTV/hg\nVQit61myKMCDasaFX0CXGg0nNrzBytgdbKtWjWwkbW3a4tvYFy8HLwz1ChcQZHY216b/HzcCAzFt\n2xa7mTNUXRNFqaRUIMmjsgQSgA0n43hvZQjudc0JHOpBdZMizAikhI3vk3QiiD/dehGcdY24tDis\nq1jTr1E/+jr1pXbVwi2mp6xbR/ykzzCwtsb+p7mYFLI4kKIoTw6VIqWS6u1Wh9mDWnAyJpkhC4+Q\nkp5V+MZCQM8fqOk6iBEn1vNX7W7M6TSHxpaNmXdyHt3XdOf93e9z/sb5R3Zl9tJLOC5fhszK4tLA\nQdzauq0EV6UoypNMBZIn0Isutsx9tSVn4lIYsvAwKXeKEEz09KDPbHDui/7OL+h45Sw/d/mZTT6b\n8Gvux9GEowzcNJCFpxaSo3l4VboqLi7UWx2MSePGXBkzhsQff0RqNCW8OkVRnjQqkDyhuje3Yd5r\nrTgXf5vBCw5xMy2z8I319OGVX6BJL9gyHo4tyi0RvPHljXjV9WLmvzMZtnUYV1KvPLQrw1q1cFgS\nhFlfH67/9DOxo98hJ7WA5JKKolRKKpA8wTo3rc0vfq2IuJbKoF8PkZR699GN7tE3hH6LtWlUNr4P\nIb8BYG5izv91/D++fu5rwm+G03d9X9ZeWPvQ7KB6RkbYfvUVtT/9lNS9e7k0cCCZ+dSZVhSlclKB\n5Ann1bgWC/xaE3U9jUG/HiLxdhGCiYGRNv18gxdg3dvahI9oU9v3btibNX3W0MSyCZP+mcT7e97n\nRsaNArsSQmD52qs4LFxAzvUkovr7krr/n5JdnKIoTwQVSCqBDo2sWRzgQcyNdAbOP8i1W0XILmto\nAgN/A4d28McoCNuQ+1adanVY2G0hH7b6kH2x+/BZ58O+2H0P7a6qpyf1VgdjaGtLzKhRJC0OVDU4\nFKWSU4Gkknj2GSsWD/UgPiWDgfMPcTWlCMHEqCoMXgl2LSF4qPY2l+6Pv76ePgHOAfze83csq1jy\n9s63+fLgl9zJulNwd/b21PttOdW7dOHat98SN24cGpU6XVEqLRVIKhHPBjUJGtaGhFsZDJh/kLjk\n9MI3Nq6uLYZl1wrWvglLX4akyNy3G1s25veevxPQPIDg8GB8N/oSmhhaYHd6VatiN2sm1mPe5db6\nDVx+bQhZV6+W5PIURamgHhlIhBANhRDGuu9fEEK8K4QwL/uhKcXhUc+SpSPaciM1kwHzDxJ7s+CZ\nwwOqmMPQv+DF6XDlX/ipHez9DrK16y7G+sZ82PpDFnZfSGZOJn6b/fgp5CeyNPlvPxZCYPXmm9jP\nnUPmxYtE9evPnX9PlMZlKopSgRRmRrIGyBFCPAMsBOoDv5XpqJQSaelgwbIRbUm5k8WAXw4RnVSE\nYKKnD21GwttHoMmLsHsq/NweLu3PPcTDxoM1fdbwYv0X+fnkz/j95UdUSlSBXVbv3Jl6K1egV9WU\ny/7+JK9eXZLLUxSlgilMINFIKbOBV4CZUsr3AdvCdC6E6CGEOC+EuCCEGJ/P+wFCiEQhRIjua0Se\n974TQpwRQoQJIX4UuhJ9QggjIcR8IUS4EOKcEEKloc2HW11zfhvpSerdbAbMP8il62lF66CGLfQP\nhFfXQE4mBPaEtW9BWhIA1Y2q8/XzXzO943RiUmPw3eDLinMrClxYN3Zyov6qVVRt04b4Tydx9cuv\nkFlFeJBSUZQKqzCBJEsIMQjwBzbqXntkgichhD4wF/AGmgGDhBDN8jl0pZTSXfe1QNf2WaA94Ao4\nAx5AR93xE4FrUspGun73FuIankrOdmb8PtKTjKwcBsw/SGRiMR4UdOoCbx2C596H0JUwpzWcWJa7\nGN+9Xnf+6PMHrWq3Yurhqby5800S7yTm25W+mRl1f5mH5bBh3Fy+nOjhI8i+ebMkl6goSgVQmEAy\nFGgHTJVSRgkh6gPLCtGuDXBBSnlRSpkJrABeKuS4JGACGAHGaANXgu69YcA3AFJKjZTyeiH7fCo1\nq1OD30d5kp0jGTj/EBeu3S56J0am0GUKvP43WDXSPnMS2BMStTm5apnW4ucuP/NJ2084fvU4Put9\n2H55e75dCQMDan88ljrffUt6SAiX+vYj49y54l+goijl7pGBREp5Vkr5rpTydyGEBVBdSjmtEH3b\nATF5fo7VvfZffYUQoUKI1UKIurpzHgR2A/G6r61SyrA8i/xfCiH+FUIECyFU7ddHaGJTgxWjPJES\nBs4/xPmrxQgmALWbwdDN0HsWJJzRrp3s+gqy0hFCMKjJIFb2XoldNTs+2PMBE/dP5HZm/ucy69NH\nm/QxJ4dLgwZza8uWElyhoijlqTC7tvYIIWoIISyBk8BiIcQPhehb5PPaf2+gbwDqSSldgR1AkO6c\nzwBNAXu0waeTEKIDYKB77R8pZUvgIDC9gHGPEkIcE0IcS0zM/1bL08SpdnVWvu6JnhAM+vUQZ+Nu\nFa8jPT1oFQCjj4GzD+z7Xru7K3IXAA3MGrD0xaW87vo6Gy9upN/6fhy7mn8K/youLtS/l/Txvfe5\nNmuWSvqoKE+gwtzaMpNS3gJ8gMVSylZAl0K0iwXq5vnZHojLe4CUMklKeS+nx69AK933rwCHpJSp\nUspUYDPgCSQBd4A/dccFAy3zO7mUcr6UsrWUsrW1tXUhhlv5NbSuxsrX22FsoMfgBYc4fSWl+J1V\nswaf+TBkLQg9WPoKrBkBqdcw1DNkdIvRLPFegoGeAcO2DuOHYz+QmfNgYkkDa2tt0sd+fUn6eR6x\nb49WSR8V5QlTmEBiIISwBXz532J7YRwFnIQQ9YUQRsBAYH3eA3T93tMHCNN9Hw10FEIYCCEM0S60\nh0ntlqANwAu64zoDZ4swpqdefauqrBzVjqpGBgz+9RChsckl67ChF7x5ADqOg7PrtIvxxxaDRoOb\ntRvBvYPp26gvi88sZtCmQYTfDH+gCz0jI2y//JLakz4ldd8+Lg0YSOalSyUbl6Ioj01hAskXwFYg\nUkp5VAjRAIh4VCPdluHRurZhwCop5RkhxBdCiD66w97VbfE9CbwLBOheXw1EAqfQ3k47KaW8lwRq\nHDBFCBEKDAE+LMQ1KHk41DRlxShPalQx5NUFhzkRXcKdU4Ym4PUJvPEP1HaBje/B4h6QcAZTQ1Mm\nt5vMnE5zuJ5+nYEbBxJ0JgiNvP8WlhACy1dfxWHRInKSkojyHUDq3/sLOKGiKBWJKrX7FLuSnM7g\nXw+RlJpJ4FAPWtezLHmnUsLJ32HrRLh7C9q9rZ2tGFXlRsYNPj/wObtiduFh48HU9lOxrfbgI0mZ\nsVeIfftt7kZEUOvDD7EcNhTdY0SKojxGpVZqVwhhL4T4UwhxTQiRIIRYI4SwL51hKuXJzrwKK0e1\nw7q6MX6LjnD4YlLJOxUC3AfDO8fBbSD8Mwt+8oTwbViaWDLTayZfPPsFZ66fwWe9DxsiNzzwEKOR\nvR31fv+N6l27cu3774n7WCV9VJSKrDC3thajXduog3YH1Qbda0olYGNmwspRntiamRCw+CgHIkvp\nsRxTS3hpLgT8BQZV4Lf+sMoPcfsqrzi9wuo+q3GycOKT/Z/w0d6PSLl7/8K/nqkpdjNnYP3eGG5t\n2MDlV19TSR8VpYJ65K0tIUSIlNL9Ua9VZOrW1qMl3r7L4F8PEXPzDh92bYy3iw32Fqal03l2JhyY\nBXu/B30j6PwZeAwnB1h8ZjFzQ+ZiYWzBV+2/4lm7Zx9ofnvXLuLGfoyoUgX7H2dh2jLfjXqKopSy\nwt7aKkwg2QEEAr/rXhoEDJVSdi7pIB8XFUgKJyn1Lm8sO87RS9rFdxc7M3o429DD2YaG1tVK4QSR\nsOlDuLgb6rTQPtho60ZYUhgT/p5AZEokg5oM4v1W71PFoMp9Te9GRhLz1ltkxcVjM+lTLHx9Sz4e\nRVEeqjQDiQMwB22aFAkcAN6VUkaXxkAfBxVIiubS9TS2nrnK5tNXCYnRbg92qlUNb2cbujvb0My2\nRvEXv6WE02tgywS4cx3avglen5Chb8Csf2exLGwZ9c3q881z39Dcqvl9TXNSUrjy4Uek7d+PxeDB\n1J4wHmH4yLRviqIUU6kFkgI6f09KObNYIysHKpAUX3xKOtvOJLD5dDxHom6gkeBgaUoPZxu6N7eh\nRV1z9PSKEVTSb8KOz+H4YqhhB97fQdNeHIo/xMT9E7mRfoM33N5guMtwDPQMcpvJnByu/fADNxYu\nwtTDA7tZMzGwLIXdZoqiPKCsA0m0lNKhWCMrByqQlI6k1LvsCEtg8+mr/HPhOlk5kto1jOne3IYe\nzW1oU98SA/0iFt2MOQIb3oNrZ6BxT3jxO1JMqjP18FQ2R23GzdqNr5/7Goca9/+6paxfT/ynkzCw\nssJ+7hxMmjYtxStVFAXKPpDESCnrPvrIikEFktJ3KyOL3eeuseX0VfacTyQ9KwcLU0O6NK2Nt4sN\n7Z+xwthAv3Cd5WTBoZ9gzzRAaB9ubPsGf13exleHvyJbk83HHh/T16nvfbfU0k+dJvadd8hJSaHO\n11Op4e1dNherKE8pNSPJQwWSspWemcPe8ES2nrnKjrAEbmdkU83YAK8mtfB2tqFjI2uqGhs8uqOb\nl+GvsRCxFWxcoNcsrlrY8ek/n3I4/jAd7Tsy5dkpWFWxym2SnZhI7LtjSD9xgpqvv471mHcRekWc\nFSmKkq8SBxIhxG0ezNYL2qy+VaSUhfjLUDGoQPL4ZGZrOBB5na1nrrLtTAJJaZkYG+jRoZE13s42\ndG5SGzPThyyQSwlh62HzOLh9FTxGoOk0kd+iNjHj+AyqGVVjcrvJdHLolNtEk5lJwpdfkhy8mmov\nvECd779Dv3r1x3C1ilK5lemM5EmjAkn5yNFIjl66wZbTV9l65irxKRkY6AnaNayJt7MtXZvVxrq6\ncf6NM25pa50cmQ/VaoP3NCLruDB+/wTO3TiHj5MPH3t8TFXDqgBIKbn5++8kfP0NRg4O2M+dg3H9\n+o/xahWl8lGBJA8VSMqfRiMJvZLCltNX2XI6nktJdxACPBwttTvAnG2wM6/yYMMr/2qTQMafhGe6\nkuX9DT9d/otFpxdhW9WWb57/hha1WuQennb4CFfeew+ZnY3dD/9Hteeff4xXqSiViwokeahAUrFI\nKTmfcFsXVK5yTlex0dXejO7NbfB2tqFB3gcgc7K1M5PdU0GTAx0/5t9nnuOTA58RnxbPcOfhvOn2\nJob62ltmmbFXiB09mrvh4dT68AMshw1TSR8VpRhUIMlDBZKKLSrPA5AndQ9ANqpdjR7NbejhbEtT\n2+raQJByBTZ/DOc2Qq1mpPWYxrfxO/nzwp80tWzKN89/Q0PzhgBo7twh7pOJ3N6yhRq9emH71Zfo\nmZiU52UqyhNHBZI8VCB5csQlp7NNF1SOXrr/Acgezja425ujF75Zu7vrViy09Gdn0858fvz/uJN9\nh/dbvc+gJoPQE3pIKUma/yuJM2di0rQp9nPnYGj7YNp6RVHyV5opUvLbvZUCHAM+lFJeLPYoHxMV\nSJ5M11PvsuOs9gHIA5H3PwD5YuPqtLk0H73DP0MVC653nsjkm8fZd2UfnraefNn+S2yq2gBwe/du\n4j4aizAx0SZ9bNXqEWdWFAVKN5B8jrbW+m9ot/4OBGyA88CbUsoXSjzaMqYCyZMvJV37AOTm0/Hs\nDU8kI0uDhakhfvVvMezmLMxuhCLrd2S1Sw++DwvEQM+ASZ6T8K6vfUjxbmQksW+9TWZcnEr6qCiF\nVJqB5LCUsu1/XjskpfQUQpyUUrqVcKxlTgWSyuVOZjb7whPZcvoqO8OukXY3k6HGu/lIfwVGZHGp\n7Sg+y44i9PopXqz/Ip+0/QQzY7P7kj6aDxqIzYQJCCOj8r4cRamwSjOQHARmoK2jDtAP+EAXSJ6I\nuiQqkFRed7NzOBCZxNbTV/n3zDnezVpIL/1DXDGsy5wmndmctherKlZ89dxXeNp63p/0sXVrbdLH\nmjXL+zIUpUIqzUDSAJiFNo08wEHgfeAK0EpKub+EYy1zKpA8HbJzNBy9dJPIA2vxivwWOxKYZeDJ\ncvts0sU1+j0ziHFtP8DEwISUDRuI/3QS+jUtqTtnDibNmpX38BWlwlG7tvJQgeTpo7mbxrVNX2F9\n6hcSMWW4uRvR5tEYaWzp7/AxQ1q1xzL2IrGjR5OTnIzlkCGY9++HkcMTk0JOUcpcac5I7IHZQHu0\nu7f2A2OklLGlMdDHQQWSp1jCWeTG9xExh1hbszlfVJVk6qWTmdiVJlV609uhCh02LUazfx/k5GDa\nti3m/ftTvWsX9IwLSN+iKE+J0gwk29Hu2Fqqe+k14FUpZdcSj/IxUYHkKafRwImlsP0zkrPvMKlh\nS/ZkxmGc3ZCkS32RWZZ41tDgn3KKBkd3oYm7gr6ZGWYvv4R5v34YOzmV9xUoSrkozUDywIL6k7LI\nfo8KJAoAqYmwbSIydCUbaznydQ1jctDjOcsRXLjYhNDYW+ihYaD+NXrHHsH8+AHIzqaKuzvm/ftT\nw7sHeqam5X0VivLYlGYg2QEEAr/rXhoEDJVSdi7pIB8XFUiU+1zcAxs/IO7WJSY6NuGY5jaNLBrR\n2e5lUq+78lfoDS4l3aFmzh1GpZ+jXdh+DK9Eo1e1KjV69cK8f3+qODd/5GkU5UlXmoHEAZiDdteW\nBA4A70opowsxiB5od3zpAwuklNP+834A8D3aHWAAc6SUC3TvfQf0BPSA7WjXZWSetuuBBlJK50eN\nQwUS5QFZGbD/BzT7Z7CuRg2W16rL+cwkqhlWo0/DPriaeXMswpANJ+O5fjuD1qkx+N84ScOzhxB3\n72LcrCnm/fph1ru3qn2iVFplXSHxPSnlzEccow+EA12BWOAoMEhKeTbPMQFAaynl6P+0fRZtgOmg\ne2k/MEFKuUf3vg/a51lcVSBRSuR6BGweh4zcyUlzG1Y4OrMtNYosTRZtbNrQz8kXk0xXNoQmsPX0\nVUhNpc/1U/SJPYp5XBTCxIQaPXpg3r8fVVq2VFmGlUqlsIGkuFUOPwAeGkiANsCFe7m4hBArgJeA\nsw9tpSUBE8AIbVoWQyBB10813flHAauKM3hFyWXlBEP+QFw+gPuur3A/uYOxZvb82bQDwbcj+fjv\nj6hVpRb9GvXjvW4vc/KyZF2II0POt6XejRgGJBzHc8tWUtauxahhQ+0s5eWXMLCwKO8rU5THprgz\nkhgpZd1HHNMP6CGlHKH7eQjQNu/sQzcj+QZIRDt7eV9KGaN7bzowAm0gmSOlnKh7fQawDzgBbCxo\nRiKEGIU22ODg4NDq8uXLRb5O5SkjpXb9ZPdUiD1KjoUjf7v3ZUVmHP/EHcBAGNDJoRMDmwykYTVX\nNp+5yroTcYReiOf5KyfpG38cx6uRYGBA9a5dsOjfH1NPT1VDXnlilfWtrWgp5UOf3BJC9Ae6/yeQ\ntJFSvpPnmJpAqpTyrhDiDcBXStlJCPEM2rWVAbpDtwPjgFvAl1LK3kKIejwkkOSlbm0pRSIlRGyH\nXV/C1VCo6US05yhWkcKfF9ZyK/MWDcwaMKDxAPo07ENymh7rT8ax7kQcGRHheEcfpVvscapkpGFg\nZ4dF/36YveKDYe1a5X1lilIkJQ4kBaSPB+0MoYqU8qG3xYQQ7YApUsruup8nAEgpvyngeH3ghpTS\nTAgxFjCRUn6pe+8zIAO4DUwCMtHelqsFHHhUBmIVSJRikVJbRGv313DtLNRqRkbHsWwx0mPF+RWc\nSTpDFYMq9G7QmwFNBtDIohFh8bdYG3KFzccvU//cMXpGH8bl2gWknj7VOnbAon9/qnV4HmFQ3LvK\nivL4lHuKFCGEAdrbVZ3R7so6CgyWUp7Jc4ytlDJe9/0rwDhdMsgBwEigB9rAtQWYKaXckKdtPdSM\nRHkcNBo48wfs+QaSLoCtG3h9ymkLW1acX8nmqM1kajJpWaslA5sMpItDF/SFAUcv3WBtSBzHD4Ty\n7PkDdI85innGbTRW1lj364t5v34Y2duV99UpSoHKPZDoBvEi2kV5fWCRlHKqEOIL4JiUcr0Q4hug\nD5AN3EBb3+ScbnbyE9pdWxLYIqX84D9910MFEuVxysmGU6tgzzRIvgz2HtDpU5Jt3VgbuY6V51cS\nmxqLpYklfZ360r9Rf2yr2XI3O4e95xPZcDyalN176HzxIK2vnUcAeq3aUOe1gVTv1EmltFcqnAoR\nSCoKFUiUUpWTBSeWwb7v4dYVcHwOOk1E4+DJgbgDrDy3kr2xexFC8IL9CwxoMgBPW0/0hB63M7LY\neiaBXftCsdi7lW6Xj1ArPZmsajWo/tJL1Hl1EMYN6pf3FSoKoALJfVQgUcpEVgb8GwR//x+kJkDD\nTuD1Kdi34krqFYLPB/NHxB/cvHuTejXq4dvYlz4N+2BmbAbAtVsZbAiJJWzDDhof24Xn1TMYSA1p\njZ2xHzKIWr3+v707j4+yuvs+/vllmSxkg5CwJSEEEIhsQVAQ2QkCKpJYBVvb+rTWl7bWPq21rba9\n7961223t3U27qPWuXR4BEQQUhSAIyL6FnQAJCQkQEkISspHJzJznj2sIQxIhZjIJSX7v1ysvMzNn\nrjnHQL6c33Vd58zFLzi4nQepujINEg8aJMqn7NWw63XY8juoLoFb5sC056HPSOxOO2ty17A4azH7\ni/cT7B/M3KS5LBiygKynfaMAACAASURBVOToq3ugZBdX8sGmI5S/u5zbj3xCXNUFaoNCqZ02i2GP\nPUKELsmi2oEGiQcNEtUmaitgx19g6x/hcjkk3w9Tn4fYoQAcLTnK4qzFrD61mhpHDSNjRrJwyEJm\nJc4iyN9ast4YQ+bpUrYuyyB4zSrGnt6PzeXgQr8kQtIeYPSXHyIgPKw9R6m6EA0SDxokqk3VlMG2\nV2D7n8FeCSMehKk/gOiBAFyyX2LlyZUszlpM7qVcugd1J21wGg/e8iBx4XH1h3E4XWzNPMWJf71N\nv61r6V9+jssBNgpvm0TCFx9m2PQJ+OnNjsqHNEg8aJCodlF9Ebb8Hna+Co5aGP0wTP4edO8PWLOP\nHYU7WHRsERvyN2CMYVLcJBYMWcBd/e7CT66GRHWtg82rNlK25G0GH95GiNPO2e59qZx5DylffZiE\nxD7tNUrViWmQeNAgUe2qsgg++S3s+hsYF4z5Ekz+LkT0rW9SWFXI0uNLWXp8KSWXS+gX1o8FQxaQ\nNiiNqOCoaw5XUlTKrjcW4f/BKuLOn8LuF8DRwbcRPD+dSQ/eTXSY7uyoWocGiQcNEnVTKD9jXeG1\n9x8gfjDuq3DXtyHs6tIpdc46Pjr9EYuyFrHn/B5sfjZmD5jNwiELGd5zeKPVhXN3ZHLijX/RY9t6\nQu01nO3WkxPjphO38EGm3zmUUJveQa9aToPEgwaJuqmU5sGmFyHzLQgIgtsfh4nfgtAe1zQ7UXqC\nxVmLWZW9impHNcnRySwcspDZA2YTEhByTVtnTQ1Zi1dQsuRteuYcwSF+7O47nIvT5nBb+t3cNaQX\nAf56PkV9NhokHjRI1E2pJNu6S/7g22ALg/FPwoRvQMi1paxKeyXv5bzHomOLyC7PJsIWwfxB83lo\nyEP0j+jf6LA1J7PJ+t9/Yz54j+DqCs6HRPHJoAkE3juP1GmjSImP0n1TVLNokHjQIFE3taKj1jpe\nR1ZAcCTc+U244wkIunbnRWMMu8/vZnHWYj7K+wiHcTCx70QWDFnA5LjJ+Pv5X9vebudixjry/vEW\nwfv3YIA9vYawZ/hkEu+7my9PGkSPbrosi/p0GiQeNEhUh3DugLXS8PEPIDQaJv5fGPcY2EIbNS2u\nLuadE+/w9vG3Kaouok+3Pjx4y4OkDU6jZ0jPRu3tBQUULX6bi0vfIbC0hDJbN3KiE+g1fCijJ44i\ndNBAbElJBPTo0ei9quvSIPGgQaI6lII9sOFnkL0ewnrBpGfgtket8ykNOFwOPs7/mEVZi9hxbgcB\nfgHM6j+LhUMXMjpmdKMSlnE4qNy8mTPLVlK4/wiRJecIdtbVv+4fFYUtKQlb0gCCkga6/5tEYL9+\niL9/w49XnZwGiQcNEtUh5W2D9T+DvE8goh9MfhZSHgH/wCab55TnsCRrCStOrqCyrpIh3YewYOgC\n7hlwD6GBjWc1ABuOFvLnJVtw5uYyOaiS1LDLdCssoPbUKZwlJfXtxGbDlpiILSmJoKQB2JIGWv9N\nTMQvtOljq45Pg8SDBonqsIyBUxth/c+hYCdE9bfukh/xEPg3fWlvdV01q0+tZtGxRWSVZhEWGMa8\ngfNYMGQBSVFJjdrXOV28tfM0/5NxnPKaOhaMjeeZWUPo7qjGfioX+6kcarNzsOfkUHsqh7r8AmuP\nFrfAvn2bnMX4R0frSf0OToPEgwaJ6vCubP+74Wdwbj9ED4Kpz8Gt6fApy6QYY9hfvJ9FWYtYm7uW\nOlcdd/S+gwVDFzA1fiqBftfObMqr6/jD+hO8uTWX4EB/vj5tIF+ZOIDgwGtLWi67HXtuLvacUw1C\n5hSmpqa+nV9kJEEDBjSaxQTGxekOkR2EBokHDRLVaRgDx96HDT+v3/6Xac/D0HvhOv/6L6kpYfnJ\n5SzJWsK5qnPEhMQwvs94RseOJiU2hYFRA+uXZMkpruQXq4+x7uh54rqH8NycYcwd0fuGswvjcuEo\nLKQ251T97MWebf3XWXyhvp0EBmJL7I9tgHsWM3AgtgFJBA1IxK9bt1b536RahwaJBw0S1enUb//7\nKyg54d7+94cweNZ1A8XpcrL5zGZWnFzB3qK9XLx8EYDwwHBGxo4kJSaFlNgUhvcczr68al547wjH\nCisYl9id/7j3VkbERbaou85Ll6xwaTCLsefng9NZ3y6gd2+CkpIalcoCYmK0TNYONEg8aJCoTsvp\nsG5o/PiXV7f/nfZDSJp63UABq/SVX5HPvqJ97CvaR2ZRJtnl2QD4iz9DegxhVMxoaioSWL3LRkl5\nKA+MieN7s4fQK6J1Ntwydjv2/Hxqs7Mblcpc1dX17fzCw61gGZB0TanMFh+HBDZ98YHyngaJBw0S\n1ek56yDz37Dx13CpoH77X/rf+ZkOU15bzv7i/WQWZZJZnMnB4oNcdl4GINSvJxVlcVCbyIO3TuLZ\naVMJC/bNDY3GGBxFRdizsxuVyhxFRVcbBgRgS0ggaGDS1VKZe0bjH6b7tnhLg8SDBonqMhy1sOdN\n2PxSo+1/W6LOVUfWxaz6Gcuewn2U1BZbL7qCGBiRTGrSHaT0SmFkz5GE2Xz/y9tZWYn91KnGs5jT\np8HhqG8XEBvrnr24ZzG3DCZ0zBg90f8ZaJB40CBRXY69Gnb/zVq+vsH2v94wxnC26ixLD21m0cHN\nlLtO4B9UCGLwEz8GRw2uP4GfEptCn2592uzchqmrw55f0OhyZXt2Dq7KSsAKl8j77ycyPY2gAQPa\npF8dmQaJBw0S1WXVVsCOv8LWPzS5/a83XC7DO3sLeHHtfi46T5CceJHu0WfJKj1EtcM6vxEbEntN\nsNzS45ZGlx37mjEGR3ExNfsyKV++nMrNm8HpJCQlhagH0gmfPQf/ML1arCkaJB40SFSXV1MG2/8E\n2/5kbf87/AEYdh8kjIfw3l4duqrWwV83ZvPXTTkAPDapPzNGucgqO1hfEjtXdQ6AkIAQhvcczugY\nK1xGxowkMqhlV4K1VF1REZdWrqRs2XLsOTlISAgRs2YRmZ5O6LixiG5fXE+DxIMGiVJuV7b/3fW6\nFSgA3QdYgZIwHhImQPTgT73J8XrOlNXw4ofHWJF5ltjwIJ69ewgPjInDz08orCoksziTzKJM9hXt\nI+tiFk5jXfY7KGpQ/axldMxo4sPj26QcZozh8v79lC1bzqX338dVVUVgfDyRafOJmj+fwL59b3yQ\nTu6mCBIRmQ38HvAHXjfG/KrB648CvwbOuJ962Rjzuvu1F4F7AD8gA/gWEAK8DQwEnMAqY8wPbtQP\nDRKlGnDYofAgnN5mfeXvgCr3SfSQ7hA/HhLusIKlb0qTC0Z+mr2nS/npqiNk5pcxvF8EP74nmTuS\noq9pU11XzaELh6xLj4v3caDoABV1FQBEB0fXB8uomFEkRydj8/ftcveumhoqMjIoW7ac6u3bQYRu\nE8YTmf4A4TNn4BfcOpc7dzTtHiQi4g8cB1KBAmAX8LAx5ohHm0eBscaYpxq8906sgJnsfuoT4Dlg\nJ3CHMWaDiNiAj4BfGGM+uF5fNEiUugFj4GKOO1i2W18lJ6zX/IOsMLkyY4m/vdFujo0PZ1i5/yz/\n/cExzpZfZs7w3jw3ZxgJ0U0v8OgyLrLLsutLYfuK9lFQWQCAzc9mlcNiRzM6ZjSjY0fTPbh7qw7f\nk72ggPLl71K+fDl1Z8/iFx5OxD1ziUpPJ3jEiC51Y+TNECQTgJ8YY+52P34OwBjzS482j9J0kEwA\nXgbuAgTYBHzRGHO0QbvfA4eMMa9dry8aJEq1QNUFa6Zyehuc3gFn94HLveR8zFArWOLdJbHuiU3e\nAFljd/La5hz+/HE2Tpfh/9yVyFPTBhEefOMT7hdqLtSHSmZRJkcuHsHhsi7vTYxItEphsVawDIgY\n0Oq/4I3LRfXOnZS9s4yKtWsxtbUEDR5EZFo6kfPuI6Bn431fOpubIUg+B8w2xjzmfvxFrNnEUx5t\nHgV+CRRjzV6+bYzJd7/2EvAYVpC8bIz5YYPjRwF7gZnGmJzr9UWDRKlWUFcDZ/ZCvnvGcnoH1JZb\nr4X1vloKSxgPvUZcszrx+UuXefHDLN7ZW0B0NxvPzBrCgnHx+Ps1/5f/ZcdlDpccrg+WzOJMyt2f\nHxUUxeiY0YyKHUVKbAq3Rt9KcEDrlaOcFRVcWv0B5cuWUbN/PwQEEDZlClHpaYRNntxp766/GYLk\nQeDuBkFyuzHmmx5tooFKY0ytiDwBPGSMmS4ig7DOrSxwN80Avm+M2eR+XwCwClhjjPndp3z+48Dj\nAAkJCbfl5eX5ZJxKdVkuFxQfu1oOy98OZaet1wK7QdzYqyfx48ZBUDgHCsp44b0j7MotZWjvcH58\nbzITB7XsX/bGGE5dOmWFinvmknspF4AAvwCSo5Prrw4bHTu6yZ0jW6I2O5uyZcsoX7kSZ/EF/KOj\nibzvPiLT0wi+5ZZW+Yybxc0QJDcsbTVo7w9cNMZEisizQLAx5gX3a/8BXDbGvOh+/AZWAD3dnL7o\njESpNlJ+xj1jcZfEzh8C4wLxg17DIWECJmE866uT+M8NFykorWHmsFienzuMpBjv74ovvVxaP1vJ\nLMrk0IVD2F12APpH9Gdq3FRSE1MZ0XNE/WrHLXVlt8nyZcuo2PAxOBwEjxhBVHoaEffcg39EhNfj\naW83Q5AEYJWrZmBdlbUL+Lwx5rBHmz7GmHPu79OwZh3jRWQB8DVgNlZp60Pgd8aYVSLyM2AY8KAx\nxkUzaJAo1U5qK6Bgl7sUtg0KdkOddbOiKzKBk0G3suh8P7Y5bmHCHRP51swhRIa2XpnI7rRzpOQI\n+4v3s/3cdraf247D5SA2NJbU/qnMTJhJSmwK/n7ebSPsuHiRS6tWUfbOMmqPH0dsNsJTU4lMT6Pb\n+PEddpvidg8SdyfmAr/Duvz3DWPMz0Xkp8BuY8xKEfklMA9wABeBJ40xx9yzkz9hXbVlgA+NMd8R\nkTggHzgG1Lo/pv6S4U+jQaLUTcJZZ112XH8Sf7u1JhhQbkI5IEMIHTSJUXfOIiB+LASGtOrHX7Jf\nYmP+RjLyMthyZgt2l53o4GhmJMwgNTGVsb3GEuDX8rW4jDFcPnyE8mXLKH//fVzl5QT06UPk/PuJ\nSkvDlpDQiqPxvZsiSG4WGiRK3aSMgdJcOL2d0mObqDr5CXEO6zyLyy8Qv74pV0/ix98B3VrvSqmq\nuio2F2wmIy+DzWc2U+OoISooiukJ05mZMJPxfcYT6N/y2ZGrtpbK9espe2cZVVu2gDGEjhtHZHo6\nEXfP6hB73WuQeNAgUapjMMawMTOLtWtWEl95gBndchhUdwI/93kOogdfvZ8lYTz0SLrhvivNUeOo\nYcuZLWTkZbCxYCNVdVWEB4YzNX4qqf1TubPfnQT5N/+mzIbqCgspf3cFZcuXUZd3Gr/QUMLnziEq\nPZ2QlJSb9t4UDRIPGiRKdSx2h4t/bMvl9x+dwGGv4TvJ1Xyh71lCC3dbJ/NrSq2G3WKsmUrCBOur\nz0jwYhYBUOusZfvZ7azNW8uG/A1U2CsIDQhlStwUUhNTmdh3IqGBLZtNGGOo2bPHWpblww8x1dXY\nEhOJTEsjcv79BPbq5VXfW5sGiQcNEqU6potVdn637jj/3nGaUJs/35oxmC+NT8BWetLjfpZtVnkM\nICDk6mXH8eMhfhwEt3xRyDpnHTsLd5KRl8H60+sprS0l2D+YSXGTmJkwk8lxk1u8B4urqopLH66h\nbPkyanbvAT8/ut01kaj0dMKmT8fP5ttlYZpDg8SDBolSHduJ8xX87P2jbDxeTGJ0KM/PHUZqcq+r\nJaGKwqtLu+Rvh3MHwDgBgV63WsGSOMla8biFV2g5XA72nt/L2ry1fHT6Iy7UXMDmZ+POvneSmpjK\nlLgpLV7J2J6XR9ny5ZQvfxfH+fP4R0YScd99RKWnEZyc3KJjtgYNEg8aJEp1Dhuyivj5+0c5WVTJ\nhKRofnxvMsl9m7hfo7YSzuy+ej9LwS5rtePeI+Ge31jrhXnBZVxkFmWSkZfButPrKKwqJEACuKPv\nHaQmpDI9YXqL1gMzTidVW7dRvnwZFRnrMHV1BA0dSlR6OhH33UtAd9+tMdYUDRIPGiRKdR51Thdv\n7TzN/2Qcp7ymjgVj43lm1hBiwq9zMtzpgKMrYe2P4NIZGP0IzPwJhMV43R9jDIcuHCIjL4OMvAwK\nKgvwF3/G9hpLav9UZvSf0aK76p1lZZS//z7ly5Zz+fBhCAwkfNo0ItPTCLvrrjbZMliDxIMGiVKd\nT3l1HX9Yf4I3t+YSHOjP16cN5CsTBxAceJ3SVW0lbPo1bHsFbKEw/ccw9istLnc1ZIzh2MVj9aGS\neykXQUiJTWFW4ixmJMygd7fPvpHY5aws696UlatwlpYSEBND5Pz7iUxLJyjJd1sGa5B40CBRqvPK\nKa7kF6uPse7oeeK6h/DcnGHMHdH7+pfUFh+HD56FnI9brdzVkDGG7LJsK1ROZ3Ci1FqWf2TMSFIT\nUpnZfyZx4XGf7Zh2OxUbN1K+bDmVmzbVbxkcmZ5GxJw5+Id5v8yMJw0SDxokSnV+W05e4IX3jnCs\nsIJxid358b3JjIyL+vQ3GANHVsCa51u93NWUU+WnWJe3joy8DI5etHbEGNZjGLMSZzEzYSaJkYmf\n6XiO4mLKr2wZnJ3t3jI4lcj0B1pty2ANEg8aJEp1DU6XYcnufH6zNosLlXbSx/Tje3cPpXfkdZaU\nr62EzS/B1pd9Uu5qSn5FPh/lfURGXgYHLhwAYHD3waQmpJLaP5WBUQObfZPiNVsGr16Nq7KSwLi4\nq1sG9+vX4n5qkHjQIFGqa6m4XMcrG7J545NT+PsJT0wZyOOTkwixXScc2qDc1ZTCqsL6mcq+on0Y\nDIkRiaT2t0JlaI+hzQ4VV00NFevWUfbOMmvLYD8/Bm/8mICYls2yNEg8aJAo1TWdLqnmVx8eZfXB\nQiJDAolqYmXha35FG8MU5za+Yf8bsaaEDwJm8KrtS5T5RfGpv8qbeKGptk2FQcNnnHKJ2qD9XLbt\nwx5wAsTg7+xJsH00IfYUAp39Efe7bpQt3S9dYPDZLH748vcICmjZ7EqDxIMGiVJd246cEt7eU4DD\nee3OE0399jMGbK5q7i75F9MuLsHuF8x7Pb/KJ1HzMOLv0a7p351NPtvEk6aJJz0PWWcuUWL2ccHs\nppwjGJzY6EE0Y4mWsYQzEPHYU+XTfpW//Pkx2AJadr5Eg8SDBolSqkUunIDV33WXu0bA3N9YqxG3\nsfLacjYWbCQjN4OtZ7did9mJCYmxlr/vn8qYXmO8Wv7+02iQeNAgUUq1WBtf3XUjlfZKNhVsYt3p\ndWwu2Mxl52V6BPdgWvw0ZvWfxbg+4wj0a53NwTRIPGiQKKW81g5Xd91IdV01W85uISPXWv6+2lFN\nhC2CafHTSO2fyoS+E7D5t3zxRw0SDxokSqlWc+EErH4Wcja0a7mroVpnLVvPbCUjL4OP8z+moq6C\nsMAwVqWtatESLaBBcg0NEqVUq2pU7voCzPyvdit3NVTnrGNH4Q72nt/L02OebvFxNEg8aJAopXzC\ns9wVGArTf2SVu/x9v6BiW2hukHh/D71SSnVVQWHWifevb4N+Y6wbGl+bai1f34VokCillLd6DoYv\nLocH34Tqi/DGLHj361BZ3N49axMaJEop1RpE4Nb58NQuuOvbcGAJ/PE22PGqtR9KJ6ZBopRSrcnW\nrXG569Wp1jbAnZQGiVJK+YJnuavmIrxxNyx/EiqL2rtnrU6DRCmlfKVhuevg2/DHsZ2u3OXTIBGR\n2SKSJSInReQHTbz+qIgUi0im++sxj9deFJHDInJURP4g7qUzReQ2ETnoPmb980opddPq5OUunwWJ\niPgDrwBzgGTgYRFJbqLpYmPMaPfX6+733glMBEYCw4FxwBR3+z8DjwOD3V+zfTUGpZRqVVfKXQ/9\no1OVu3w5I7kdOGmMyTHG2IFFwP3NfK8BggEbEAQEAudFpA8QYYzZZqw7Kf8BzG/9riullI+IQPL9\nTZS7/tphy12+DJJ+QL7H4wL3cw09ICIHRGSpiMQDGGO2ARuAc+6vNcaYo+73FzTjmIjI4yKyW0R2\nFxd3jWu5lVIdSKNy1/c6bLnLl0HS1LmLhuuxrAISjTEjgXXAmwAiMggYBsRhBcV0EZnczGNaTxrz\nqjFmrDFmbEwLt5lUSimfu6bcVdohy12+DJICIN7jcRxw1rOBMabEGFPrfvgacJv7+zRguzGm0hhT\nCXwAjHcfM+56x1RKqQ6nvty1E+76Tocrd/kySHYBg0VkgIjYgIXASs8G7nMeV8wDjrq/Pw1MEZEA\nEQnEOtF+1BhzDqgQkfHuq7W+BKzw4RiUUqrt2LrBzP/scOUunwWJMcYBPAWswQqIJcaYwyLyUxGZ\n5272tPsS3/3A08Cj7ueXAtnAQWA/sN8Ys8r92pPA68BJd5sPfDUGpZRqFx2s3KXLyCul1M3MXgWb\nXoKtf3QvVf9DGPvVNlmqXpeRV0qpzqDJctcUyNvW3j2rp0GilFIdwTXlrjL439k3TblLg0QppTqK\nm/TqLg0SpZTqaDzLXXG3tXu5S4NEKaU6qp6D4ZFl8NA/PcpdT7R5uUuDRCmlOjIRSJ7nUe5aau3M\nuP0vbVbu0iBRSqnO4Jpy11j48PtWuevSOZ9/tAaJUkp1Jp7lru6JEBbr84/0/R0tSiml2taVclfy\nvBu3bQU6I1FKKeUVDRKllFJe0SBRSinlFQ0SpZRSXtEgUUop5RUNEqWUUl7RIFFKKeUVDRKllFJe\n6RI7JIpIMZDXwrf3BC60Ync6Ah1z19DVxtzVxgvej7m/MSbmRo26RJB4Q0R2N2eryc5Ex9w1dLUx\nd7XxQtuNWUtbSimlvKJBopRSyisaJDf2ant3oB3omLuGrjbmrjZeaKMx6zkSpZRSXtEZiVJKKa9o\nkLiJyGwRyRKRkyLygyZef0JEDopIpoh8IiLJ7dHP1nSjMXu0+5yIGBHp0Fe8NONn/KiIFLt/xpki\n8lh79LM1NednLCIPicgRETksIv+vrfvY2prxc/6tx8/4uIiUtUc/W1MzxpwgIhtEZJ+IHBCRua3a\nAWNMl/8C/IFsIAmwAfuB5AZtIjy+nwd82N799vWY3e3CgU3AdmBse/fbxz/jR4GX27uvbTzmwcA+\noLv7cWx799vXY27Q/pvAG+3d7zb4Ob8KPOn+PhnIbc0+6IzEcjtw0hiTY4yxA4uA+z0bGGMueTzs\nBnT0k0s3HLPbC8CLwOW27JwPNHe8nUlzxvw14BVjTCmAMaaojfvY2j7rz/lh4K026ZnvNGfMBohw\nfx8JnG3NDmiQWPoB+R6PC9zPXUNEviEi2Vi/WJ9uo775yg3HLCIpQLwx5r227JiPNOtnDDzgnvov\nFZH4tumazzRnzLcAt4jIFhHZLiKz26x3vtHcnzMi0h8YAKxvg375UnPG/BPgEREpAFZjzcRajQaJ\nRZp4rtGMwxjzijFmIPB94Ec+75VvXXfMIuIH/BZ4ps165FvN+RmvAhKNMSOBdcCbPu+VbzVnzAFY\n5a2pWP86f11EonzcL19q1t9lt4XAUmOM04f9aQvNGfPDwN+NMXHAXOCf7r/jrUKDxFIAeP7rM47r\nT/0WAfN92iPfu9GYw4HhwMcikguMB1Z24BPuN/wZG2NKjDG17oevAbe1Ud98pTl/rguAFcaYOmPM\nKSALK1g6qs/yd3khHb+sBc0b81eBJQDGmG1AMNY6XK1Cg8SyCxgsIgNExIb1B2ylZwMR8fzLdQ9w\nog375wvXHbMxptwY09MYk2iMScQ62T7PGLO7fbrrteb8jPt4PJwHHG3D/vnCDccMvAtMAxCRnlil\nrpw27WXras6YEZEhQHdgWxv3zxeaM+bTwAwAERmGFSTFrdWBgNY6UEdmjHGIyFPAGqwrIN4wxhwW\nkZ8Cu40xK4GnRGQmUAeUAl9uvx57r5lj7jSaOd6nRWQe4AAuYl3F1WE1c8xrgFkicgRwAs8aY0ra\nr9fe+Qx/rh8GFhn3ZUwdWTPH/Azwmoh8G6vs9Whrjl3vbFdKKeUVLW0ppZTyigaJUkopr2iQKKWU\n8ooGiVJKKa9okCillPKKBolSXhKRn4jId2+CfuS67wVRqk1pkCillPKKBolSTRCRbiLyvojsF5FD\nIrLA81/8IjJWRD72eMsoEVkvIidE5GvuNn1EZJN734tDIjLJ/fyfRWS3e/+P//L4zFwR+YWIbHO/\nPkZE1ohItog84W4z1X3M5e49RP7S1JpJIvKIiOx0f/ZfRcTfl/+/VNemQaJU02YDZ40xo4wxw4EP\nb9B+JNbSOROA/xCRvsDngTXGmNHAKCDT3faHxpix7vdMEZGRHsfJN8ZMADYDfwc+h7XO2U892tyO\ndafyCGAgkO7ZEfcSGAuAie7PdgJf+AxjV+oz0SVSlGraQeAlEflv4D1jzGaRphZZrbfCGFMD1IjI\nBqxf9ruAN0QkEHjXGHMlSB4Skcex/v71wdpo6ID7tStLeBwEwowxFUCFiFz2WJV3pzEmB0BE3gLu\nApZ69GUG1oKTu9x9DgE6+j4j6iamQaJUE4wxx0XkNqwlt38pImux1uC6MosPbviWxocwm0RkMtZM\n5Z8i8musmcZ3gXHGmFIR+XuDY11Zfdjl8f2Vx1f+vjb6rAaPBXjTGPPcDYapVKvQ0pZSTXCXpqqN\nMf8CXgLGALlcXVr+gQZvuV9EgkUkGmtvj13ujZOKjDGvAX9zHyMCqALKRaQXMKcF3bvdvdKrH1YJ\n65MGr38EfE5EYt1j6eHui1I+oTMSpZo2Avi1iLiwVnx+EqtE9DcReR7Y0aD9TuB9IAF4wRhzVkS+\nDDwrInVAJfAlY8wpEdkHHMZarn1LC/q2DfiVu4+bgOWeLxpjjojIj4C17rCpA74B5LXgs5S6IV39\nV6kORESmAt81xtzb3n1R6gotbSmllPKKzkiUUkp5RWckSimlvKJBopRSyisaJEoppbyiQaKUUsor\nGiRKKaW8okGiyqM+GQAAAApJREFUlFLKK/8fOHDZy6mv3mcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd6fedd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [1.5, 2], 'reg_lambda': [0.5, 1, 2]}"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg_alpha = [ 1.5, 2]    #default = 0, 测试0.1,1，1.5，2\n",
    "reg_lambda = [0.5, 1, 2]      #default = 1，测试0.1， 0.5， 1，2\n",
    "\n",
    "param_test5_1 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test5_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.57934, std: 0.00334, params: {'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  mean: -0.57998, std: 0.00265, params: {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  mean: -0.57942, std: 0.00324, params: {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  mean: -0.58002, std: 0.00318, params: {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  mean: -0.57994, std: 0.00264, params: {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  mean: -0.57965, std: 0.00287, params: {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " {'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       " -0.57934210403181419)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb5_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=234,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=7,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.8,\n",
    "        colsample_bytree=0.7,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch5_1 = GridSearchCV(xgb5_1, param_grid = param_test5_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_1.grid_scores_, gsearch5_1.best_params_,     gsearch5_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 290.45499997,  329.37347999,  293.26836004,  291.09231992,\n",
       "         307.62168016,  209.82572002]),\n",
       " 'mean_score_time': array([ 0.35539994,  0.38779998,  0.42020001,  0.33739996,  0.30219989,\n",
       "         0.23179998]),\n",
       " 'mean_test_score': array([-0.5793421 , -0.57997655, -0.5794203 , -0.58002079, -0.57994223,\n",
       "        -0.57964934]),\n",
       " 'mean_train_score': array([-0.41038642, -0.41332628, -0.41837492, -0.41428499, -0.41675059,\n",
       "        -0.42116196]),\n",
       " 'param_reg_alpha': masked_array(data = [1.5 1.5 1.5 2 2 2],\n",
       "              mask = [False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_reg_lambda': masked_array(data = [0.5 1 2 0.5 1 2],\n",
       "              mask = [False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'reg_alpha': 1.5, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 1.5, 'reg_lambda': 2},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 0.5},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 1},\n",
       "  {'reg_alpha': 2, 'reg_lambda': 2}],\n",
       " 'rank_test_score': array([1, 5, 2, 6, 4, 3]),\n",
       " 'split0_test_score': array([-0.57375759, -0.57567343, -0.57371384, -0.57432511, -0.5754735 ,\n",
       "        -0.57471019]),\n",
       " 'split0_train_score': array([-0.4143322 , -0.41597434, -0.42060844, -0.41656014, -0.42011878,\n",
       "        -0.42358525]),\n",
       " 'split1_test_score': array([-0.5787594 , -0.57972128, -0.57870489, -0.57899754, -0.57897958,\n",
       "        -0.57878117]),\n",
       " 'split1_train_score': array([-0.4083347 , -0.41202896, -0.41852033, -0.41378969, -0.4150046 ,\n",
       "        -0.42036637]),\n",
       " 'split2_test_score': array([-0.57869749, -0.57900099, -0.57961928, -0.58131714, -0.58023686,\n",
       "        -0.57978917]),\n",
       " 'split2_train_score': array([-0.41095123, -0.41336749, -0.4176744 , -0.41503475, -0.41725553,\n",
       "        -0.42184265]),\n",
       " 'split3_test_score': array([-0.58218781, -0.58241107, -0.58238686, -0.58212845, -0.58190433,\n",
       "        -0.58228333]),\n",
       " 'split3_train_score': array([-0.41179105, -0.41419497, -0.41975263, -0.41352146, -0.41749895,\n",
       "        -0.42150614]),\n",
       " 'split4_test_score': array([-0.58330944, -0.58307694, -0.5826776 , -0.58333672, -0.58311784,\n",
       "        -0.58268375]),\n",
       " 'split4_train_score': array([-0.40652291, -0.41106567, -0.41531882, -0.41251893, -0.4138751 ,\n",
       "        -0.41850937]),\n",
       " 'std_fit_time': array([  88.8845548 ,  157.26384478,   67.01908877,   79.81447348,\n",
       "         104.59076385,   46.35837809]),\n",
       " 'std_score_time': array([ 0.06049661,  0.13224123,  0.09458625,  0.05138334,  0.03343291,\n",
       "         0.03089595]),\n",
       " 'std_test_score': array([ 0.00334001,  0.00264848,  0.00324116,  0.00318138,  0.00264259,\n",
       "         0.0028745 ]),\n",
       " 'std_train_score': array([ 0.0027202 ,  0.00170657,  0.00182966,  0.00139181,  0.00216687,\n",
       "         0.00168067])}"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch5_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.579342 using {'reg_alpha': 1.5, 'reg_lambda': 0.5}\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAELCAYAAADkyZC4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XdclXX7wPHPxcY9cIOiOXCjIOIo\nR/WkldtKW2q5ytHUrN8zenyep2wvNXNklqaVZak50tRMMxH3YIgbRyIqTvb398d9TCRUVA73Aa73\n63VecO7xPdeNL7n4bjHGoJRSSuU1N7sDUEopVThpglFKKeUUmmCUUko5hSYYpZRSTqEJRimllFNo\nglFKKeUUmmCUUko5hSYYpZRSTqEJRimllFN42B2Anfz8/ExgYKDdYSilVIGycePGE8aYCte7rkgn\nmMDAQCIjI+0OQymlChQROZCb67SJTCmllFNoglFKKeUUmmCUUko5RZHug1FK2SstLY34+HiSk5Pt\nDkXlwMfHB39/fzw9PW/qfk0wSinbxMfHU7JkSQIDAxERu8NRWRhjSExMJD4+npo1a95UGdpEppSy\nTXJyMuXLl9fk4oJEhPLly99S7VITjFLKVppcXNet/ttogrkZpw9BxBQ4ug0y0u2ORimlXJL2wdyM\n/Wtg0YvW957FwT8EAlpaL/9Q8C1rb3xKKeUCtAZzM5r2gWe3Q69p0OwRSD4Dv74Ls3rDG4EwPgx+\nGA6bPoeEGMjMtDtipZQLWLVqFffff/8tX3Mt0dHRtGrVCm9vb95+++2rXte/f39q1qxJcHAwwcHB\nbNmy5aY/82q0BnMzRKBMdevVuLd1LPU8HN4Eh9ZD/AaIXgibv7DO+ZSBgDDwD7O+VgsB7xL2xa+U\nypExBmMMbm4F92/vcuXK8eGHH/L9999f99q33nqL3r17Oy0WpyYYEekEfAC4A1ONMeOyne8PvAUc\ndhwab4yZ6jj3JnAfVi1rGfCMMcaISAjwGeALLMpyvBzwFRAI7AceNMaccubzXcGrONS83XoBGAOJ\ncVbCORRhvXb/ZJ0TN6jUyEo2AS2tr2VqWIlLqSLq3wt2suvImTwts0HVUvyrS8NrXrN//346d+5M\nhw4dWLduHc8++yyTJk0iJSWF2267jenTp1OiRAkWLVrE888/j5+fH82bN2fv3r0sXLgwxzIjIiJ4\n9tlnuXjxIr6+vkyfPp169epdcc2rr77Knj17OHz4MIcOHWL06NEMGjQIgHPnztG7d2927NhBSEgI\nM2fOREQYO3YsCxYs4OLFi7Ru3ZpPPvnkLx3xFStWpGLFivz444+38JPLG05L0yLiDkwAOgMNgL4i\n0iCHS78yxgQ7XpeSS2ugDdAEaAS0ANo5rv8YGAzUcbw6OY6PAX42xtQBfna8t48I+NWBZo9C1w9h\n2O/w0n545Fu4YxQUKwdb58B3g+CDpvBOPZjzCKz9EA6uhzSdeKZUfomJieHxxx9n2bJlTJs2jeXL\nl7Np0yZCQ0N59913SU5OZsiQISxevJg1a9aQkJBwzfKCgoJYvXo1mzdvZuzYsbzyyis5Xrdt2zZ+\n/PFH1q1bx9ixYzly5AgAmzdv5v3332fXrl3s3buXtWvXAjB8+HA2bNjAjh07uHjx4p8JbtKkSUya\nNOmGn/v//u//aNKkCc899xwpKSk3fP/1OLMGEwbEGWP2AojIHKAbsCsX9xrAB/ACBPAE/hCRKkAp\nY8w6R5mfA92BxY6y2zvunwGsAl7Ko2fJG75loc5d1gsgMwOO77pcwzm03mpaA3D3gipNL9dw/MOg\nVBX7YlfKya5X03CmGjVqEB4ezsKFC9m1axdt2rQBIDU1lVatWhEdHU2tWrX+nHDYt29fJk+efNXy\nkpKS6NevH7t370ZESEtLy/G6bt264evri6+vLx06dCAiIoIyZcoQFhaGv78/AMHBwezfv5+2bduy\ncuVK3nzzTS5cuMDJkydp2LAhXbp0YejQoTf8zK+//jqVK1cmNTWVwYMH88Ybb/DPf/7zhsu5Fmcm\nmGrAoSzv44GWOVzXS0TuAGKB54wxh4wx60RkJXAUK8GMN8ZEiUioo5ysZVZzfF/JGHMUwBhzVEQq\n5hSUiAzGqgFRvXr1m3+6vODmDpUbW68WT1rHziVAfMTlprUNU2HdeOtc6epXNqtVagTu2o2m1K0q\nXrw4YPXB3H333cyePfuK85s3b76h8v7xj3/QoUMH5s2bx/79+2nfvn2O12Vv3rr03tvb+89j7u7u\npKenk5yczNNPP01kZCQBAQG8+uqrtzQJskqVKn9+1oABA645IOBmObMnK6cOBZPt/QIg0BjTBFiO\nVfNARGoD9QF/rATS0ZGEclPmNRljJhtjQo0xoRUqXHe/nPxXogIE3Qd3j4UnlsCYQzBwBdzzOlRr\nDgd+g8WjYHI7GBcAn90PP4+FmCVw4aTd0StVoIWHh7N27Vri4uIAuHDhArGxsQQFBbF37172798P\nwFdffXXNcpKSkqhWzfrb97PPPrvqdT/88APJyckkJiayatUqWrRocdVrLyUTPz8/zp07x9y5c2/g\nyf7q6NGjgJVUv//+exo1anRL5eXEmX/+xgMBWd77A0eyXmCMSczydgrwhuP7HsDvxphzACKyGAgH\nvnCUk1OZf4hIFUftpQpwPK8exFYeXtY8G/8QaPW0dSwp/srBA2s/gEzHhM/ydRw1nBbWV796UIBH\nxCiVnypUqMBnn31G3759/+yT+O9//0vdunWZOHEinTp1ws/Pj7CwsGuWM3r0aPr168e7775Lx44d\nr3pdWFgY9913HwcPHuQf//gHVatWJTY2Nsdry5Qpw6BBg2jcuDGBgYFXJKNL/S9Dhw7l2LFjhIaG\ncubMGdzc3P7syylVqhT33nsvU6dOpWrVqjzyyCMkJCRgjCE4OPim+nCuR4y5oQpA7gsW8cBq9roT\na5TYBuBhY8zOLNdUudSsJSI9gJeMMeEi8hAwCKsDX4AlwPvGmAUisgEYAazHGkX2kTFmkYi8BSQa\nY8aJyBignDFm9LViDA0NNYViR8vUC3Bk8+Uh0ofWwwVH7vYubSWbS0Ok/UPBu6S98SrlEBUVRf36\n9e0OI1fOnTtHiRIlMMYwbNgw6tSpw3PPPXfT5b366quUKFGCF198MQ+jzHs5/RuJyEZjTOj17nVa\nDcYYky4iw4GlWMOUPzXG7BSRsUCkMWY+MFJEugLpwEmgv+P2uUBHYDtWE9gSY8wCx7mnuDxMebHj\nBTAO+FpEngQOAg8469lcjlcxCGxjvcAaIn1y75W1nFWvA8YaIl2x4eUaTkAYlK2pQ6SVuo4pU6Yw\nY8YMUlNTadasGUOGDLE7JJfntBpMQVBoajC5kZwE8ZGXazjxkZDimHNQvMLlGk5AS6gaDJ6+9sar\nioSCVIPJyfTp0/nggw+uONamTRsmTJhgU0R5zyVrMMrF+JSG2ndaL7CGSCdEXzlEOsYxMcvNE6o0\nuXKIdOlqVy/bRfy08xjlS3gTUkPXglP5Y8CAAQwYMMDuMFyWJpiiys0dKjW0XqGO/yDnT1yu4RyK\ngMhP4feJ1rlS/lmGSLeAyk3A/eZ2uXOGuOPneGrWJgBeubc+T7TRDayUspsmGHVZcT+o19l6AWSk\nwbHtl2s4hyJg53fWOQ9fa9i0f5a+nOJ+toX+xpJofD3dCa9Vnv8s3MX2+NO83rMJvl7utsWkVFGn\nCUZdnbunlUSqNYdwx0zhpMOOiaCOpLNuAqx93zpX7jZHLcdR06kQZNWUnCxi30mW7fqDUffU46l2\ntzFxVRzvLItl9/FzTHo0hIByxZweg1LqrzTBqBtTuhqU7gENe1jv0y7CkS2Xazhxy2GrYxa0dylr\n5eg/+3JCrb6gPGSM4X+Loqhcyocn2tTEzU0Y3rEODauWZuSczXQdv4YJDzendW37aldKFVU6A0/d\nGk9fqNEK2j4Lfb+EF3fDyM3Q4xNrK4PzJ2D1mzCzJ4yrARNbwYJnYMuXkLjHGlJ9C37cfpSth07z\n/N/qXtEc1iGoIvOHt8WvhDePTlvP1F/3UpRHTCrXkB/7wcyaNYsmTZrQpEkTWrduzdatW2+6rFul\nNRiVt0SgXC3r1bSPdSz5DBzeeHkAwY55sPEz61yx8tmGSDez5vXkQkp6Bm8uiSGockl6Nff/y/ma\nfsWZN6wNo77Zyn9/jGJbfBJv9NJ+GXV1hWE/mJo1a/LLL79QtmxZFi9ezODBg1m/fr0tsWiCUc7n\nUwpu62C9wNrh80TMlUOkYx3zZd08rMU/rxgi7Z/jRNBZvx/k4MkLfDagBe5uOY8YK+HtwcRHmjNx\n1R7e/imG3cfPMfkx7ZdxSYvHWINK8lLlxtB53DUvKWz7wbRu3frP78PDw4mPj8cuBTdNq4LLzQ0q\n1oeQftB9AoyIhNH74OGvoc0z4FXC2m567hPwfiN4twF83c8aUBAfCempJF1M48MVu2lb2492da+9\naKmIMKxDbT7t34LDpy7QZfwa1uw+kU8PqwqCwrofzLRp0+jcufOt/GhuidZglGsoVg7q3mO9ADLS\n4Y8dVw6R3uXYAtbDhzO+9XgqNYBO9bsh52tCiRx3Z7hCh3pWv8yQLzby+KfrGdM5iEG319L5Mq7i\nOjUNZyqM+8GsXLmSadOmsWbNmlv98dw0TTDKNbl7WEvWVA2GloOtY2eOQnwEZ+PWcmLjCp70XIrH\nsoXWhtpla1pNavU6Q9D9V50EGuhXnO+ebs3oudt4bVE02w+f4Y1ejSnmpf8VirLCth/Mtm3bGDhw\nIIsXL6Z8+fI3FHte0iYyVXCUqgINuvGv5Id5KOM/HHs6Fp74Ce7+j7UiwZ4V8E1/eL8xrHoDzv6R\nYzHFvT0Y/3AzXuoUxMJtR+g58TcOJl7I32dRLqkw7Adz8OBBevbsyRdffEHdunWvGaezaYJRBcrO\nI0nM23yYAW0C8a9QDqq3hDYjoc8seCEG+n4FFRvAqtfgvYZWP87B3/8yHFpEeKr9bXw2IIyjScl0\nGb+GX3dfu11dFX5Z94Np0qQJ4eHhREdH4+vr++d+MG3btqVSpUqULn31OV2jR4/m5Zdfpk2bNmRk\nZFz1ukv7wYSHh/+5H8zVZN0Ppnv37n/ZD+ZSH8zYsWNJTEzk6aefJjg4mNDQ665J6TS6mnJRWU25\nkHhs2nq2H07il1EdKO17jbXQTsRB5DTYPAtSkqBSYwgbBI0f+Msw6AOJ5xnyxUZi/zjL6E5BDLlD\n+2XyS0FaTVn3g7kst6spaw1GFRi/xCbw6+4TjOhY59rJBcCvNnR6HV6IgvvfB5MJC0bCu0Gw9P+s\n/XIcapS3+mU6N67CuMXRDJ+9mQup6U5+GlXQTJkyheDgYBo2bEhSUpLuB5MLWoPRGkyBkJFpuO/D\nX7mQmsHy59vh5XGDfxsZAwfXQcRkiFpgbVdQ525oMQhq3wVubhhjmLx6L28siaZupZJ88lgINcoX\nd84DKaBg1WByovvBXJsmGE0wBcI3kYcYNXcbH/VtRpemV2+nzpUzR62VBDZOh3N/WCPQWjwJwY9A\nsXL8ujuB4V9ao4Y+7NvsuvNs1M2LiooiKChImyRdlDGG6OhobSJThdfF1Aze+SmWpv6lub9JlVsv\nsFQV6PAyPLsDek2DkpXhp79bEzrnj+D2EkdZMLwtVUr70H96BBNXxek6Zk7i4+NDYmKi/nxdkDGG\nxMREfHx8broMHfyvXN6na/dx7EwyH/QJztu/dD28rAU5G/e2liiJmALbvoZNn1M9IJwf2j3BS1E1\neXNJDDsOJ/FW76YU99b/MnnJ39+f+Pj4686MV/bw8fH5c8LnzdAmMm0ic2mJ51Jo99YqwmuVZ2q/\nfBhuefGUNfJsw1Q4tQ9TvCKbKnRneEwTSlaszuTHQgn0034ZVbS5RBOZiHQSkRgRiRORMTmc7y8i\nCSKyxfEa6DjeIcuxLSKSLCLdHec6isgmEdkhIjNExMNxvKyIzBORbSISISKNnPlsKn98tCKOi2kZ\njOlc7/oX5wXfstB6OIzYBI/MRao2I2T/FH7zeYYXk17n3+MnszI65wmcSqkrOa0GIyLuQCxwNxAP\nbAD6GmN2ZbmmPxBqjBl+jXLKAXGAP5AMHADuNMbEishY4IAxZpqIvAWcM8b8W0SCgAnGmDuvFaPW\nYFzbvhPnufvdX3iwRQCv9WhsXyAn98KGaWRsmol7ymmiMwM4Vu8x2vV+GvEuaV9cStnEFWowYUCc\nMWavMSYVmAN0u4lyegOLjTEXgPJAijEm1nFuGdDL8X0D4GcAY0w0ECgilW7lAZS93loajZeHG8/e\nVcfeQMrVgnv+h/sLUaTe+wElfL1pv/s1Lr5Rj9SFo61JnUqpv3BmgqkGHMryPt5xLLtejmatuSIS\nkMP5PsClledOAJ4icilz9gYu3bMV6AkgImFADaxajyqANh44xaLtxxh8Ry0qlrz5USx5yqsYXmH9\nqfbSBuaHTGd5WlMkchqMD4EvekLMYmt+jVIKcG6CyWm4T/b2uAVAoDGmCbAcmHFFASJVgMbAUgBj\ntef1Ad4TkQjgLHBpyvU4oKyIbAFGAJuznMta5mARiRSRSB254pqMMby2KIoKJb0ZdHstu8P5C3Fz\no2uXnvj1+4LOMpHxPEjKke0wuw98GAxr3ocLJ+0OUynbOTPBxHO5dgFWbeJI1guMMYnGmBTH2ylA\nSLYyHgTmGWPSstyzzhhzuzEmDFgN7HYcP2OMGWCMCQYeByoA+7IHZYyZbIwJNcaEVqigE+hc0dKd\nf7DxwCmeu6uuSw8Lbl3bj89GdmFxucdpdPptFgWNw5QOgOX/gnfrw/fD4MiNLfOuVGHizASzAagj\nIjVFxAur5jE/6wWOGsolXYGobGX05XLz2KV7Kjq+egMvAZMc78s4PgdgILDaGHMmj55F5ZO0jEze\nWBJN7YoleDDU9Vs4/csW49unWnN/cA2e3lKdIe5juTBwDQQ/DDu/g8ntYepd1vya9JTrlqdUYeK0\nBGOMSQeGYzVvRQFfG2N2ishYEenquGykiOwUka3ASKD/pftFJBCrBvRLtqJHiUgUsA1YYIxZ4The\nH9gpItFAZ+AZpzyYcqo5EQfZd+I8YzoF4eFeMBaa8PF0590Hm/LP+xvwc/Rxun59kj0t/wPPR0Gn\ncVZz2XeDrJUCfv4PJNm3R7pS+UknWuowZZdxNjmN9m+tonbFEswZHF4g16datyeRYV9uIi09k/f7\nBHNn/UqQmQl7V1orBcQuAXGDoHshbDAE3g4F8DlV0eYKw5SVuiGTV+8l8Xwqr9xbv0AmF4BWt5Vn\nwYi21PArxpMzIvlg+W4yEah9Jzw8B57ZYk3k3L8GZnSBieFW4kk5a3foSuU5TTDKJRxLSmbKr3vp\n0rQqTQPK2B3OLalWxpe5Q1vTs3k13lsey5CZGzmb7BinUjYQ7h5rNZ91mwgePrDoRXinPiwaBQmx\n1yxbqYJEE4xyCe8tiyUj0zDqb/m0JIyT+Xi6884DTXm1SwNWRB+n24S1xB0/d/kCT19o9ggMXgUD\nf7aazDZ+BhNawIyuELUQMnTTM1WwaYJRtos5dpZvNh7i8VaBVC9f7Po3FBAiQv82NZk1sCVJF9Lo\nPmEty3b9kf0i8A+FnpPhuV3Q8R+QGAdfPQIfNIVf34HzJ+x5AKVukSYYZbvXF0dRwtuDER1r2x2K\nU4TXsvplalUozqDPI3lvWSyZmTkMrilRAe54EZ7ZBg/NhPK14Oex1pyaeUMhfmP+B6/ULdAEo2y1\nNu4Eq2ISGNahNmWKeV3/hgKqahlfvh7Sit4h/nzw824GfxHJmeS0nC9294D6XaDfAnh6PTTvZ23z\nPLUjTO4AW2ZDWnL+PoBSN0GHKeswZdtkZhq6jF/D6Qtp/PxCO3w83e0OyemMMXzx+wHGLthF9XLF\nmPx4CLUr5mJF5uQzsO0riJgMJ2KhWHlo/jiEPgFlqjs/cKWy0GHKyuXN33qEnUfO8OI9dYtEcgGr\nX+bxVoF8OSicM8lpdJ/wG0t3Hrv+jT6lIGwQDIuAx3+A6q1g7QdWP83sh2HPSijCfywq16Q1GK3B\n2CI5LYM73/mFMsU8WTC8LW5uBXPey604mnSRoV9sZGt8EiM71ubZu+re2M/h9CHYON0afXYhEcrX\nsZJQ075WQlLKSbQGo1za5+v2c/j0RV65t36RTC4AVUr78tWQVjwQ4s+HK+IY+HkkSRev0i+TkzIB\ncOc/rdFnPT4Bn9KweDS8EwQLn4fj2Zf2Uyp/aQ1GazD57vSFVO54cyXNa5TlswFhdodjO2MMM38/\nwL8X7CKgXDEmPxZCnUo3uVPm4Y0QMRV2fAsZKdZSNGGDoN591uABpfKA1mCUyxq/Io5zKemM6Rxk\ndyguQUR4rFUgsweHczY5ne4T1rJkx9GbK6xaCPT42Fop4K5X4dR++Ppx+KAJ/PIWnDueh5ErdW2a\nYFS+OnTyAp+vO0DvEH+CKms/QVYtAsuxcERb6lQqydCZm3h7aQwZOc2XyY3i5aHtc/DMVugzG/zq\nwsr/Wis6fzsQDkXooADldJpgVL56c2kMbm7w/N2FY0mYvFa5tA9fDQmnT4sAxq+M48kZG26sXyY7\nN3drGZrHv4fhkdDiSYhdCtPuhsntYNMXkHYx7x5AqSw0wah8s/XQaRZsPcLAtrWoXNrH7nBclreH\nO6/3bMz/ejRibdwJuo1fQ8yxPFht2a8OdH7Daj67711IT4X5w62VAn76O5z8ywawSt0S7eTXTv58\nYYyhz+TfiTt+jlWj2lPSx9PukAqEjQdOMnTmJs6npPPOA03p3LjK9W/KLWOsbQM2TLEW1zSZUPce\naDEIbusIbvr3p8qZdvIrl7Ii+jjr953kmbvqaHK5ASE1rH6ZepVL8tSsTby5JPrm+2WyE4Gat8OD\nn8Oz2+GOUdYotFm9YHwIrJsIF0/nzWepIklrMFqDcbr0jEw6ffArGZmGn567A88CshWyK0lJz+DV\n+buYHXGQdnUr8GGfZpQu5oREnZ4Cu+ZbtZpD68GzGDR50KrVVG6U95+nCiStwSiX8c3GeOKOn+Ol\nTvU0udykS/0yr/VozG97TtBl/Bqij53J+w/y8IYmD8CTP8GQ1dCoF2ydA5PawKedYcd3kHELgw5U\nkaI1GK3BONX5lHTav72K6uWKMXdoqwK7FbIr2XjgFE/N3Mi5lHTe6t2U+5rkYb9MTi6chM0zYcNU\nOH0ASlSG0AEQ0h9KVnbuZyuX5BI1GBHpJCIxIhInImNyON9fRBJEZIvjNdBxvEOWY1tEJFlEujvO\ndRSRTSKyQ0RmiIiH43hpEVkgIltFZKeIDHDms6ncmfrrPhLOpvDKvUGaXPJISI2yLBzRlvpVSjHs\ny02MW5yH/TI5KVYO2oyEkZvh4a+tprJVr8N7DeGbAXBgnc6pUTlyWg1GRNyBWOBuIB7YAPQ1xuzK\nck1/INQYM/wa5ZQD4gB/IBk4ANxpjIkVkbHAAWPMNBF5BShtjHlJRCoAMUBlY0zq1crWGoxzHT+b\nTPu3VtGubgU+fjTE7nAKndT0TP69YCez1h/k9jp+fNS3Wf7tqZO4BzZMgy0zITkJKjWGsIHQ+AHw\nKp4/MSjbuEINJgyIM8bsdfySnwN0u4lyegOLjTEXgPJAijEm1nFuGdDL8b0BSor1Z3IJ4CSgm5rb\n6IPlu0lNz2R0J10Sxhm8PNz4X4/GjOvZmPV7T9Jl/BqijjqhXyYn5W+DTq9Zc2q6fAAYWPCMNadm\nyStWAlJFnjMTTDXgUJb38Y5j2fUSkW0iMldEAnI43weY7fj+BOApIpcyZ2/g0j3jgfrAEWA78Iwx\nJvMWn0HdpLjj55iz4RCPtKxOTT/9i9aZ+oRVZ86QcFLTM+k58TcWbD2Sfx/uVdzqixm6BgYsgdvu\nhIhP4KPmMLO3tWpApv43LKqcmWByanDP3h63AAg0xjQBlgMzrihApArQGFgKYKz2vD7AeyISAZzl\nci3lHmALUBUIBsaLyF8WuxKRwSISKSKRCQkJN/ts6jrGLY7G19OdkXfWsTuUIqF59bIsGNGWhlVL\nMWL2Zl5fFEV6Rj7+YheBGq3ggenw3E5o/zIc2wZfPggfNYPfPrIGC6gixZkJJp7LtQuw+lCu+NPK\nGJNojElxvJ0CZG+ofxCYZ4xJy3LPOmPM7caYMGA1sNtxagDwnbHEAfuAv7TNGGMmG2NCjTGhFSpU\nuIXHU1ezfm8iy6P+4Kn2t1G+hLfd4RQZFUv68OWgcB4Lr8Enq/fSf/oGTp2/ahek85SsDO3HwLM7\noPenULKqtRTNu/Xhh+FwdGv+x6Rs4cwEswGoIyI1RcQLq+YxP+sFjhrKJV2B7Dsk9eVy89ileyo6\nvnoDLwGTHKcOAnc6zlUC6gF78+RJVK4ZY3htcTSVS/nwRJuadodT5Hh5uPGf7o14s1cTIvZZ/TK7\njuRTv0x2Hl7WPJonFltNaE0esvap+eQOmPY32D7XWg9NFVpOSzDGmHRgOFbzVhTwtTFmp4iMFZGu\njstGOoYUbwVGAv0v3S8igVg1oF+yFT1KRKKAbcACY8wKx/H/AK1FZDvwM/CSMeaEUx5OXdWP24+y\n9dBpnv9bXXy93O0Op8h6sEUAXw9tRXqGoefHa/lhy2F7A6rcGLp+CM/vgnteg/MJ8O2T1lDnFf+D\nM/nYb6TyjU601GHKeSYlPYO7311NMS93fhx5O+5FdCtkV5JwNoVhszYRsf8kg26vyUudgvBwhdUU\nMjNhzwqImAy7fwJxg/r3Q9hgqNHG6tNRLiu3w5R1D1WVZ2b9fpCDJy/w2YAWmlxcRIWS3swa1JL/\nLtzFlF/3sevoGT7q25xyxfNpvszVuLlBnbus18l9EDnN2ptm1w9QsQG0GGg1qXmXsDdOdUu0BqM1\nmDyRdDGNdm+tpFHV0nzxZJjO2ndB30Qe4v++30GFEt588lgIjaqVtjukK6VesPpoIiZbI9C8S0Hw\nI1ay8attd3QqC1eYaKmKkI9X7SHpYhpjOuuSMK7qgdAAvhnSikxj6D3pN/v7ZbLzKgbNH7MW2Xxy\nmbU3zYap1tYBX/SA6EWQmWF3lOoGaIJRt+zw6Yt8unYfPYKrud5fxeoKTQPKsGBEW5r4l+GZOVv4\nz8Jd+TtfJjdEICAMek21BgVC5dGKAAAgAElEQVR0+Dscj4Y5feGDYFjzvs6pKSA0wahb9s7SGABe\nuKeezZGo3PAr4c2sgS3p3zqQaWv28di0CBLPpVz/RjuUqAjtRsGz26yN0crWgOX/gneC4Pun4fAm\nuyNU16AJRt2SHYeTmLflMAPaBFKtjK/d4ahc8nR349WuDXnngaZsPHiKruPXsuNwkt1hXZ27JzTo\nBv0XwlProNmjsPN7mNIBptwJW7+yNktTLkUTjLppxhjGLY6mtK8nT7fXTtiCqFeIP98ObY0xhl4f\n/8Z3m+LtDun6KjWA+9+FF6Kg85uQfBrmDYZ3G8DPYyGpADxDEXFDCUZE3HJa30sVTat3n2BN3AlG\ndKxDaV8nbN+r8kVj/9IsGNGWZtXL8PzXW/n3gp2kuVq/TE58SkPLITBsAzw2DwJawpr34P3GMOcR\n2PuL7lNjs+smGBH5UkRKiUhxYBcQIyKjnB+acmUZmYbXF0VRvVwxHguvYXc46haVL+HNF0+25Ik2\nNZm+dj+PTVvPCVftl8nOzQ1u6wh9v4SRW6D1SDjwG3zeFSa0hIgpkHLW7iiLpNzUYBoYY84A3YFF\nQHXgMadGpVzed5viiT52llH31MPLQ1taCwNPdzf+2aUB7z3UlM0HT9P1ozVsiz9td1g3pmwNuPvf\n1j413T+2hj4vehHeqQ8/vggJMXZHWKTk5jeDp4h4YiWYHxwrG2u9swi7mJrBOz/F0tS/NPc7ez94\nle96NPPn26daIyL0nrSObzcWwD4NTx8IfhgGr4KBKyDoPtg0AyaEwYwuELUAMnQ/QmfLTYL5BNgP\nFAdWi0gNwKblWZUr+HTtPo6dSeaVe+vrpMpCqlG10swf3obQGmV54ZutvDq/gPTL5MQ/BHp+As/t\ngjv/CYl74atH4YOmsPptOKf7QjnLTS0VIyIejtWSCzRdKubGJZ5Lod1bqwivVZ6p/a67UoQq4NIz\nMhm3OJqpa/YRVrMcEx5uToWSBXyPn4x0iF1iLUmz7xdw94KGPa2FNv2zb0mlcpJnS8WIyDOOTn4R\nkWkisgnomCdRqgLnw593czEtgzGd/7KXmyqEPNzd+Pv9DfigTzDb4k/Tdfwath4qYP0y2bl7WCs3\n95sPwyKsLZ+jF8LUjjC5PWz5EtKS7Y6yUMhNE9kTjk7+vwEVsHaOHOfUqJRL2nfiPLPWH+ShFgHU\nrqir3BYl3YKrMXdoa9xEeOCTdXwTecjukPJGhXpw71vwQjTc+7a14Ob3T1m7by77F5w6YHeEBVpu\nEsylRvZ7genGmK1Zjqki5M0l0Xh5uPHsXXXsDkXZoFE1a75Mi8CyjJq7jX/+sKPg9stk510SwgbB\nsPXw+HwIbAO/fQgfBsPsvtbeNZmF5FnzUW72g9koIj8BNYGXRaQkoD/pImbjgVMs3nGMZ++qQ8WS\nPnaHo2xSrrgXMwaE8ebSGCav3kv00bNMeKQQ9MtcIgK12lmv04dg43TYOANiFkH52tBiEAT3tSZ5\nquu6bie/iLgBwcBeY8xpESkPVDPGbMuPAJ1JO/lzxxhD70nrOHjyAqtebE9xb92nTsH8rUcYPXcr\nZXy9+PjR5jSrXtbukJwjPcVa92zDFIjfAJ7FoelDVrKp1MDu6GyRZ538xphMwB/4u4i8DbQuDMlF\n5d7SnX+w8cApnrurriYX9aeuTavy3VNt8HAXHvrkd77eUEj6ZbLz8LYSysDlMGglNOwOm2fBx61g\n+n1W8slIsztKl5SbGsw4oAUwy3GoLxBpjHnZybE5ndZgri8tI5O/vbcadzdhyTO3u8Z+7sqlnDqf\nysg5m/l19wkeDa/OP+9vWPhXdzifCJu/sLZ6Pn0QSlaF0AHQvB+UrGR3dE6Xlzta3gvcbYz51Bjz\nKdAJuC+XQXQSkRgRiRORMTmc7y8iCSKyxfEa6DjeIcuxLSKSLCLdHec6isgmEdkhIjNExMNxfFSW\n63eISIaIlMtNnOrq5kQcZN+J84zpFKTJReWobHEvpvdvwZA7ajHz94M8POV3jp8t5MN8i5eHts9a\na5/1nQMVg2Dl/+C9hvDtQDi4XhfaJHc1mG1Ae2PMScf7csAqY0yT69znDsQCdwPxwAagrzFmV5Zr\n+gOhxpjh1yinHBCH1UyXDBwA7jTGxIrIWOCAMWZatnu6AM8ZY645X0drMNd2NjmN9m+tonbFEswZ\nHK6z9tV1Ldh6hNFzt1HK14OPHw2heWHtl8nJiThri+ctsyDlDFRuYo1Ma9TbWhOtEMnLGszrwGYR\n+UxEZgAbgddycV8YEGeM2WuMSQXmAN1ycV92vYHFxpgLQHkgxRgT6zi3DOiVwz19gdk38Vkqi09+\n2Uvi+VRdEkblWpemVfnu6dZ4e7jT55PfmRNx0O6Q8o9fbeg8zlpo8/73IDMd5o+w5tT89Hc4uc/u\nCPNdbjr5ZwPhwHeOVytgdS7KrgZk7fWLdxzLrpeIbBORuSISkMP5PlxOFiewFt+8lDl7A1fcIyLF\nsJrxvs1FjOoqjiUlM3XNXro0rUrTgDJ2h6MKkPpVSjF/eBta1irHmO+288q87aSmF6GZDd4lIPQJ\neOo36P8j1GoP6ybCh81g1oOwe1mRmVOTq0Z1Y8xRY8x8Y8wPxphjwO+5uC2nP3mzt8ctAAIdzW3L\ngRlXFCBSBWgMLHXEYbASznsiEgGcBbKvidYFWHupSe8vQYkMFpFIEYlMSNBF7q7m3WUxZGQaRt9T\nz+5QVAFUppgXnw0I46n2t/Hl+oP0nfI7x88U8n6Z7EQgsC08OAOe2wF3jIIjm2FWbxgfAusmwMVT\ndkfpVDfba5ub9pJ4rqxd+ANHsl5gjEk0xlza1WgKkH2luQeBeY4tAi7ds84Yc7sxJgyrJrU72z1Z\nazx/YYyZbIwJNcaEVqhQIRePUfREHzvD3I3xPN4qkIByhavtWOUfdzfhpU5BTHi4OVFHz3D/R2vY\neCDHv/sKv1JVoeP/wXM7odc0KF4Rlr5ibfM8fyQc2253hE5xswkmN8MjNgB1RKSmiHhh/eKfn/UC\nRw3lkq5AVLYy/tKXIiIVHV+9gZeASVnOlQbaAT/k7jFUTsYtjqaEtwcjOta2OxRVCNzXpArznm6D\nr5c7fSb/zpfri1C/THYeXtC4Nzy5FIashka9YNvXMKktfNoZdnxbqObUXHXWnIh8RM6JRIDrNsob\nY9JFZDhW85Y78KkxZqdj5FekMWY+MFJEumI1c50E+mf5/ECsGtAv2YoeJSL3YyXHj40xK7Kc6wH8\nZIw5f734VM7Wxp1gVUwCL3cOokwxL7vDUYVEvcolmT+sLSPnbOaVedvZfvg0r3ZtiLeHu92h2adK\nU+g2Hu4ea4082zAV5j4BJSpbKzyH9IdSBXtDv6sOUxaRfte60Rgz41rnCwIdpnylzExDl/FrOH0h\njZ9faIePZxH+z6+cIiPT8M5PMUxctYdm1csw6dEQKpXSte0Aq+M/brm1T03cMnDzgPpdraHO1VtZ\nfTouIrfDlG9qw7HCQhPMlb7ffJhnv9rCew81pUczf7vDUYXYou1HefGbrRT39uDjR5oTGqhzoq+Q\nuAciP7VWC0hOgkqNoMVAaPIgeBW3O7o8nQejioDktAzeWhpDo2ql6NY0p9HkSuWdextX4fthbSju\n5U7fKb8z8/cDFOU/dv+i/G1wz//g+Wjo8iEgsPBZeKc+LHnFSkAFgCYYBcCM3/Zz+PRFXulcHzc3\n16mKq8KrbqWS/DC8LW1r+/H373cw5tvtpKRn2B2Wa/EqBiH9YOiv8MRSqHMXRHwCHzWHmb0gZglk\nuu7PTJfGVZw6n8r4lXG0r1eB1rX97A5HFSGlfT2Z2q8F7y+P5aMVccT8cZZJj4ZQubT2y1xBBKqH\nW6+zx6w9aiI/hdkPQZkaVvNZs0ehmGs1NeZmLbIPczichDUSrEAPB9Y+GMt/Fu5i+tp9LH7mDupV\nLml3OKqIWrLjKC98vRVfLw8mPtKcsJqu9cvS5WSkQfRCiJgCB9aCh481BLrFIKga7NSPzss+GB+s\nDcd2O15NgHLAkyLy/i1FqWx36OQFPl+3n94h/ppclK06NbL6ZUr6ePDwlN/5Yt1+7Ze5FndPaNgD\nBiyylqVp2hd2fAeT28HUu2HbN5CeamuIuanBrAD+ZoxJd7z3AH7CWiV5uzGmwG7ppjUYGDF7M8t2\nHWPVix20WUK5hKSLaTz/1RZ+jj7OAyH+/Kd7Ix0yn1sXT8OWL605NSf3QPEKjjk1A6B03g3eycsa\nTDUg67i44kBVY0wGkJLzLaog2HroNAu2HmFg21qaXJTLKO3ryZTHQxnZsTbfbIznoU/WceT0RbvD\nKhh8y0Crp2F4JDz6LVQLgdVvw/uN4avHYN+v+bpPTW46+d8EtojIKqxZ/HcAr4lIcawFKlUBZIzh\ntUVRlC/uxZB2tewOR6kruLkJz/+tHg2rleaFr7fSdfwaJjzcnJa1ytsdWsHg5ga177Jep/bDhmnW\nnJqo+VChPoQNhCZ9rJWfnShXEy0da4aFYSWYCGPMkevcUiAU5Sayn6P+4MkZkYzt1pDHWwXaHY5S\nVxV3/CyDv9jIwcQL/OP+BjzeqobuT3Qz0i5aa51FTIajWyH0Sbj/3ZsqKrdNZLkdptwCuN3xfQbZ\nVkVWBUt6RiavL46mpl9x+oZVtzscpa6pdsWSfD+sDc9/tYV/zd/Jtvgk/tdD+2VumKevNZQ5+BGI\nj8yXIc3X7YMRkXHAM8Aux2ukiLzu7MCU83wdGU/c8XO81Kkenu4611a5vlI+nkx+LJRn76rDt5vi\neVD7ZW6eCAS0sFYLcLLc/Ha5F7jbGPOpMeZTrN0i73NuWMpZzqek897yWEJrlOWehpXtDkepXHNz\nE569qy5THg9lb8J5uny0hnV7Eu0OS11Dbv98zbo8f2lnBKLyx5Rf95JwNoWX762v7diqQLq7QSW+\nH9aGMsU8eXTaeqav3afzZVxUbhLM68BmEflMRGYAG4HXnBuWcobjZ5OZvHovnRtVJqRGWbvDUeqm\n1a5Ygu+HtaFjUEX+vWAXL3y9leQ0112Tq6i6boIxxswGwoHvHK9WWFsVqwLm/eW7SU3PZHSnILtD\nUeqWlfTx5JNHQ3jurrp8t/kwvSf9RvypC3aHpbLIVROZMeaoMWa+MeYHY8wx4Hcnx6XyWNzxs3y1\n4RCPtKxOTT/795NQKi+4uQnP3FWHaf1COXDiAl3Hr+W3PSfsDks53OwQIm28L2DGLY7B19OdkXfW\nsTsUpfLcnfUr8cPwNpQr7sVj0yKYtkb7ZVzBzSYY/ZcrQNbvTWR51B881f42ypfwtjscpZyiVoUS\nzHu6NXcGVeQ/C3fx3FdbuJiq/TJ2uupESxH5iJwTiXDlqDLlwowxvLY4msqlfHiiTU27w1HKqUr6\neDLp0RAmrorjnWWx7D5+jkmPhhBQrpjdoRVJ16rBRGKNGMv+igRG5KZwEekkIjEiEiciY3I4319E\nEkRki+M10HG8Q5ZjW0QkWUS6O851FJFNIrJDRGY4Vne+VF57x/U7ReSX3P4QCrMftx9l66HTPP+3\nuvh66cxnVfi5uQnDO1r9MgdPXqDr+DWsjdN+GTvkai2yPy8Wqezo5M/Nte5ALNay/vHABqCvMWZX\nlmv6A6HGmOHXKKccEAf4A8nAAeBOY0ysiIwFDhhjpolIGeA3oJMx5qCIVDTGHL9WjIV9LbKU9Azu\nfnc1xbzc+XHk7bjrVsiqiNl34jyDP49kT8I5Xrm3Pk+2ranzv/JAXi7Xn9WiG7g2DIgzxuw1xqQC\nc4BuN/h5AL2BxcaYC0B5IMUYE+s4twzo5fj+YeA7Y8xBgOsll6Jg5u8HOXjyAi/fW1+TiyqSavoV\nZ96wNtzTsDL//TGKZ+Zov0x+utEEcyO/paoBh7K8j3ccy66XiGwTkbkiEpDD+T7AbMf3JwBPEbmU\nOXsDl+6pC5QVkVUislFEHr+BWAudpItpfLRiN21r+3FHHT+7w1HKNiW8rS2YR91TjwXbjtDz4984\ndFLny+SHG00wU27g2pySUfb2uAVAoDGmCdbeMjOuKMDaJqAxsBTAWO15fYD3RCQCOAukOy73AEKw\n1km7B/iHiNT9S1Aig0UkUkQiExISbuBxCpaJq+JIupjGmM5B2iSgijwRYViH2nzavwWHT12gy/g1\nrNmt/TLOdkMJxhgz8QYuj+dy7QKsPpQrlvk3xiQaYy7tijkFK0Fk9SAwzxiTluWedcaY240xYVgr\nCuzO8nlLjDHnjTEnHOea5vAMk40xocaY0AoVKtzA4xQch09fZPra/fQIrkajarp0nFKXdKhXkfnD\n21KxpDePf7qeyav36HwZJ3LmWu0bgDoiUlNEvLBqHvOzXuCooVzSFYjKVkZfLjePXbqnouOrN/AS\nMMlx6gfgdhHxEJFiQMscyisS3lkaA8AL99SzORKlXE+gX3HmPd2GTo0q89qiaEbO2cKF1PTr36hu\nmNMSjDEmHRiO1bwVBXxtjNkpImNFpKvjspGOIcVbgZFA/0v3i0ggVg0o+3DjUSISBWwDFhhjVjg+\nLwpY4jgeAUw1xuxw0uO5rB2Hk5i35TAD2gRSrYyv3eEo5ZKKe3sw4eHmvNQpiIXbjtBz4m8cTNR+\nmbx2Q8OUC5vCNkzZGMNj0yLYcSSJX0Z1oLSvp90hKeXyfolNYMSXmxARPurbjDvqFs6m87zkrGHK\nyoWt3n2CNXEnGNGxjiYXpXKpXd0KLBjRliqlfeg/PYJJv2i/TF7RBFNIZGQaXl8URfVyxXgsvIbd\n4ShVoNQoX5zvnm5N58ZVGLc4muGzN2u/TB7QBFNIfLspnuhjZxndqR5eHvrPqtSNKublwfi+zRjT\nOYjF24/Sc+JvHEg8b3dYBZr+JioELqZm8O5PsTQNKMN9jatc/walVI5EhKHtbuOzAWEcTUqmy0dr\nWBVT5BcFuWmaYAqBT9fu49iZZF7RSZVK5Yk76lZgwfC2VC3jy4DPNjBxVZz2y9wETTAFXOK5FD5e\ntYe76leiZa3ydoejVKFRvXwxvnu6Nfc3qcqbS2IY9uUmzqdov8yN0ARTwH34824upmUwpnOQ3aEo\nVegU8/Lgwz7B/N+99Vmy4xg9Jq5l/wntl8ktTTAF2L4T55m1/iAPtQigdsUSdoejVKEkIgy6oxaf\nP9GS42dT6Dp+DSu1XyZXNMEUYG8uicbLw41n76pjdyhKFXpt6/ixYHhb/MsW44nPNjBhpfbLXI8m\nmAJq44FTLN5xjMF31KJiSR+7w1GqSAgoV4xvn2pNlyZVeWtpDE/N3MQ57Ze5Kk0wBZAxhtcWRVGh\npDeDbq9ldzhKFSm+Xu580CeYv99Xn592HaPHhLXs036ZHGmCKYCW7jzGxgOneP7uuhT39rA7HKWK\nHBFh4O21mPlkS06cs/plVkT/YXdYLkcTTAGTlpHJG0tiqF2xBA+E+NsdjlJFWuvafiwY0Zbq5Yrx\n5IxIPvp5N5mZ2i9ziSaYAmZ2xEH2nTjPy52D8HDXfz6l7OZfthhzh7amW9OqvLMslqEzN2q/jIP+\nhipAzian8cHy3bSsWY6OQRXtDkcp5eDr5c57DwXzj/sb8HP0cbpPWMuehHN2h2U7TTAFyCe/7CXx\nfCqv3Ftfl4RRysWICE+2rckXT4Zx8nwq3cevZfmuot0vowmmgDiWlMzUNXvp0rQqTQPK2B2OUuoq\nWt9m9cvU8CvGwM8j+WB50e2X0QRTQLy7LIaMTMPoe+rZHYpS6jqqlfFl7tDW9GxWjfeWxzJk5kbO\nJqfZHVa+0wRTAEQfO8PcjfE83iqQgHLF7A5HKZULPp7uvPNgU/7VpQEroo/TbcJa4o4XrX4ZTTAF\nwLjF0ZTw9mBEx9p2h6KUugEiwoA2NZk1sCVJF9LoPmEty4pQv4xTE4yIdBKRGBGJE5ExOZzvLyIJ\nIrLF8RroON4hy7EtIpIsIt0d5zqKyCYR2SEiM0TEw3G8vYgkZbnnn858tvyyNu4Eq2ISGNahNmWK\nedkdjlLqJoTXKs+CEW2pVaE4gz6P5L1lsUWiX8ZpCUZE3IEJQGegAdBXRBrkcOlXxphgx2sqgDFm\n5aVjQEfgAvCTiLgBM4A+xphGwAGgX5ayfs1S1lhnPVt+ycy0loSpVsaXfq0D7Q5HKXULqpbx5esh\nrejV3J8Pft7N4C8iOVPI+2WcWYMJA+KMMXuNManAHKDbTZTTG1hsjLkAlAdSjDGxjnPLgF55Eq0L\n+mHrYXYeOcOoe+rh4+ludzhKqVvk4+nO2w804d9dG7IqJoHu49cSd/ys3WE5jTMTTDXgUJb38Y5j\n2fUSkW0iMldEAnI43weY7fj+BOApIqGO972BrPe0EpGtIrJYRBreYvy2Sk7L4O2lsTSqVoquTava\nHY5SKo+ICP1aBzJrYEvOJKfRbfxalu48ZndYTuHMBJPTTMDsjY4LgEBjTBNgOVbz1+UCRKoAjYGl\nAMbafKEP8J6IRABngUtrMmwCahhjmgIfAd/nGJTIYBGJFJHIhISEm3qw/DDjt/0cPn2RVzrXx81N\nJ1UqVdi0dPTL1K5YgiFfbOTdn2IKXb+MMxNMPFfWLvyBI1kvMMYkGmNSHG+nACHZyngQmGeMScty\nzzpjzO3GmDBgNbDbcfyMMeac4/tFWDUdv+xBGWMmG2NCjTGhFSpUuLUndJJT51MZvzKO9vUq0Lr2\nXx5BKVVIVCnty1dDWvFAiD8frohj4OeRJF0sPP0yzkwwG4A6IlJTRLywah7zs17gqKFc0hWIylZG\nXy43j126p6LjqzfwEjDJ8b6yONZPEZEwrGdLzLOnyUfjV8ZxPiWdlzvXtzsUpZST+Xi682bvJvyn\nW0NWxybQfcJadv9ROPplnJZgjDHpwHCs5q0o4GtjzE4RGSsiXR2XjRSRnSKyFRgJ9L90v4gEYtWA\nfslW9CgRiQK2AQuMMSscx3sDOxxlfYg10qzA1TcPnbzA5+v20zvEn3qVS9odjlIqH4gIj7UKZPbg\ncM4mp9N9wlqW7Dhqd1i3TArg7+A8ExoaaiIjI+0O4wojZm9m2a5jrHqxA5VL61bIShU1x5KSGTpz\nI1sOnWZ4h9o8d3dd3F2sH1ZENhpjQq93nc7kdyFbD51mwdYjDGxbS5OLUkVU5dI+fDUknIdCAxi/\nMo4nZ2wosP0ymmBchDHWpMryxb0Y0q6W3eEopWzk7eHOuF6N+W/3RqyNO0G38WuIOVbw+mU0wbiI\nn6OOs37fSZ69qw4lfTztDkcpZTMR4dHwGsweFM751Ax6TFzLou0Fq19GE4wLSM/IZNySaGr5FadP\nWHW7w1FKuZDQwHIsHNGWepVL8vSsTby5JJqMAjJfRhOMC/g6Mp644+cY3SkIT3f9J1FKXalSKR/m\nDA6nb1gAE1ft4YnPNpB0wfX7ZfS3mc3Op6Tz3vJYQmuU5Z6GlewORynlorw93Hm9ZxNe69GY3/ac\noMv4NUQfO2N3WNekCcZmU37dS8LZFF6+tz6OeaJKKXVVD7eszpzBrUhOy6DnxN/4cZvr9stogrHR\n8bPJTF69l86NKhNSo6zd4SilCoiQGmVZMKItQZVLMuzLTYxb7Jr9MppgbPT+8t2kpmcyulOQ3aEo\npQoYq1+mFY+0rM6kX/bQf3oEpy+k2h3WFTTB2CTu+Fm+2nCIR1pWp6ZfcbvDUUoVQF4ebvyvR2PG\n9WzM+r0n6TJ+DVFHXadfRhOMTcYtjqGYpzsj76xjdyhKqQKuT1h15gwJJzU9k54Tf2P+1iPXvykf\naIKxwfq9iSyP+oOh7W+jfAlvu8NRShUCzatb/TINq5Zi5OzNvL4oivSMTFtj0gSTzy4tCVO5lA9P\ntKlpdzhKqUKkYkkfvhwUzqPh1flk9V76T9/AqfP29ctogslnC7cdZWt8Ei/8rS6+Xu52h6OUKmS8\nPNz4b/fGvNGrMRH7rH6ZXUfs6ZfRBJOPUtIzeHNpNEGVS9Kzub/d4SilCrGHWlTn66GtSM8w9Px4\nLT9sOZzvMWiCyUczfz/IoZMXefne+i63v4NSqvAJDijD/BFtaFytNM/M2cL/ftyVr/0ymmDySdLF\nND5asZu2tf24o46f3eEopYqIiiV9mDUwnH6tajDl1330mx7ByXzql9EEk08mrooj6WIaYzoH6ZIw\nSql85eXhxr+7NeKt3k3YsP8UXT5aw47DSU7/XE0w+eDw6YtMX7ufHsHVaFSttN3hKKWKqAdCA/hm\nSCsyjWHJjmNO/zwPp3+C4p2lMQC8cE89myNRShV1TQPK8OPI2ynt6/yNDZ1agxGRTiISIyJxIjIm\nh/P9RSRBRLY4XgMdxztkObZFRJJFpLvjXEcR2SQiO0Rkhoh4ZCuzhYhkiEhvZz5bbu04nMS8LYd5\nok1NqpXxtTscpZSiXHGvfBlo5LQEIyLuwASgM9AA6CsiDXK49CtjTLDjNRXAGLPy0jGgI3AB+ElE\n3IAZQB9jTCPgANAv22e+ASx11nPdCGMMry+OooyvJ0+1v83ucJRSKl85swYTBsQZY/YaY1KBOUC3\nmyinN7DYGHMBKA+kGGNiHeeWAb2yXDsC+BY4fvNh551fYhNYG5fIiI518qU6qpRSrsSZCaYacCjL\n+3jHsex6icg2EZkrIgE5nO8DzHZ8fwLwFJFQx/veQACAiFQDegCT8iL4W5WRaRi3OJrq5YrxaHgN\nu8NRSql858wEk1MDX/YdcRYAgcaYJsByrOavywWIVAEa42jyMsYYrITznohEAGeBdMfl7wMvGWMy\nrhmUyGARiRSRyISEhBt8pNz7dlM80cfOMrpTPbw8dLCeUqroceYosngctYv/b+/OY6wq7zCOf586\nIqUgqIhVAQdkNVYCjrsSta5oNSZWa1uNxtqm1oXaqK1/KNHE1i52iStaYrUWE61FbFVq4wqyDS4I\nAopQkFYqixtUZfv1j3NGr1dm5jpzz9LwfJLJ3OWdc587d975nfOee9831Rf41BzSEbGm4uodJOdP\nKp0B/CUiNlb8zHTgCJmg3/EAAAlUSURBVABJxwFD0ruagPvSz5j0BsZI2hQRk6oeczwwHqCpqSmT\nJeA+2LCZG//+KiP69eKkr+yexUOYmZVelrvWs4HBkgZI6kJy5DG5skF6hNLiFGBB1TbO4pPhsZaf\n6ZN+3wG4knRILCIGRERjRDQCDwAXVheXvEyYtpSV733IVf5QpZltwzI7gomITZIuIhne2g6YEBHz\nJV0LNEfEZOASSaeQDHOtBc5t+XlJjSRHQE9XbfpySSeTFMdbI+KJrJ5DR6xZ9xG3PvU6xwzfjYMG\n7lJ0HDOzwig5rbFtampqiubm5rpu85qH5vHHmcuZMnY0g/p0r+u2zczKQNKciGhqr53PPtfRklXr\nuHfmcs48oJ+Li5lt81xg6ugXUxbRpeELjD1mcNFRzMwK5wJTJ3OWreXReSv53ui96dOja9FxzMwK\n5wJTBxHB9Y8sZNceO/CdIwYUHcfMrBRcYOpgyvyVzFn2NpcdO4Qv7eAJqs3MwAWm0zZu3sINjy1i\nUJ/ufH3/vkXHMTMrDReYTpo4azlLV6/nJycOo2E7/zrNzFr4P2InvP/hRn77j9c4aMDOHD2sT9Fx\nzMxKxScMOuH2p5ewZv0GJowZ7ilhzMyq+Aimg1a++yF3Tl3C10bswYh+vYqOY2ZWOi4wHXTj44vY\nsgWuOH5o0VHMzErJBaYDFq58j/vnrOCcQ/ai387dio5jZlZKLjAdsHbdBoZ9eUcuOnpQ0VHMzErL\nJ/k74NBBvXnkksN9Yt/MrA0+gukgFxczs7a5wJiZWSZcYMzMLBMuMGZmlgkXGDMzy4QLjJmZZcIF\nxszMMuECY2ZmmVBEFJ2hMJJWAcuKzlGhN7C66BBtKHs+KH/GsucDZ6yHsueDzmXcKyJ2ba/RNl1g\nykZSc0Q0FZ2jNWXPB+XPWPZ84Iz1UPZ8kE9GD5GZmVkmXGDMzCwTLjDlMr7oAO0oez4of8ay5wNn\nrIey54McMvocjJmZZcJHMGZmlgkXmJxJOkHSIkmLJf24lTZnSHpF0nxJfypbRkn9JT0p6QVJcyWN\nyTnfBElvSZrXyv2S9Ls0/1xJo/LMV2PGb6XZ5kp6TtKIMuWraHeApM2STs8rW8Vjt5tR0pGSXkz7\nytNlyiepp6SHJb2U5jsvz3xphn5pX12QZrh0K22y6y8R4a+cvoDtgNeBgUAX4CVgn6o2g4EXgJ3S\n631KmHE88P308j7AP3POOBoYBcxr5f4xwKOAgIOBmQW81u1lPLTiNT4x74zt5av4W3gCeAQ4vYS/\nw17AK0D/9HrefaW9fFcBN6SXdwXWAl1yzrg7MCq93AN4dSv9ObP+4iOYfB0ILI6IJRGxAbgPOLWq\nzQXAzRHxNkBEvFXCjAHsmF7uCfw7x3xExDMknbU1pwJ3R2IG0EvS7vmkS7SXMSKea3mNgRlA31yC\nffL47f0OAS4G/gzk/TcI1JTxm8CDEbE8bZ9rzhryBdBDyeqE3dO2m/LI9nGAiDcj4vn08vvAAmDP\nqmaZ9RcXmHztCbxRcX0Fn32xhwBDJE2TNEPSCbmlS9SScRzwbUkrSPZuL84nWs1qeQ5lcj7JHmRp\nSNoTOA24regsbRgC7CTpKUlzJJ1TdKAqNwHDSXbAXgYujYgtRYWR1AiMBGZW3ZVZf2mox0asZltb\nZ7n6bXwNJMNkR5Ls1T4rad+IeCfjbC1qyXgWcFdE/ErSIcA9acbCOk+VWp5DKUg6iqTAHF50liq/\nAa6MiM0lXh68Adgf+CrwRWC6pBkR8WqxsT52PPAicDSwN/C4pGcj4r28g0jqTnI0OnYrj59Zf3GB\nydcKoF/F9b58dnhpBTAjIjYCSyUtIik4s/OJWFPG84ETACJiuqSuJPMaFTKUshW1PIfCSdoPuBM4\nMSLWFJ2nShNwX1pcegNjJG2KiEnFxvqUFcDqiFgPrJf0DDCC5DxDGZwH/CySEx2LJS0FhgGz8gwh\naXuS4nJvRDy4lSaZ9RcPkeVrNjBY0gBJXYBvAJOr2kwCjgKQ1JtkGGBJyTIuJ9lrRNJwoCuwKseM\n7ZkMnJO+O+Zg4N2IeLPoUJUk9QceBM4u0R73xyJiQEQ0RkQj8ABwYcmKC8BDwBGSGiR1Aw4iOcdQ\nFpX9ZDdgKPn2ZdLzP78HFkTEja00y6y/+AgmRxGxSdJFwBSSd+hMiIj5kq4FmiNicnrfcZJeATYD\nl+e5d1tjxh8Bd0j6Icmh9LnpXlouJE0kGULsnZ4HugbYPs1/G8l5oTHAYuC/JHuSuaoh49XALsAt\n6VHCpshxcsQa8hWuvYwRsUDSY8BcYAtwZ0S0+bbrPPMB1wF3SXqZZBjqyojIe4blw4CzgZclvZje\ndhXQvyJnZv3Fn+Q3M7NMeIjMzMwy4QJjZmaZcIExM7NMuMCYmVkmXGDMzCwTLjBmZpYJFxiz/wPp\ntPR/7Wwbszy5wJjVQfopaPcnswruEGYdJKkxXcjpFuB54GxJ0yU9L+n+dIJBJI2RtFDS1HRhp1aP\nMiQdqGQBshfS70O30macpHskPSHpNUkXVNzdXdID6ePdm04VgqSrJc2WNE/S+JbbzbLkAmPWOUOB\nu4FjSSYBPSYiRgHNwGXpRKC3k0xoeTjJwlNtWQiMjoiRJNPJXN9Ku/2Ak4BDgKsl7ZHePhIYS7IQ\n3ECSqUIAboqIAyJiX5KZh0/+3M/U7HPyXGRmnbMsImZIOpnkn/q09OCgCzCdZPbcJRGxNG0/Efhu\nG9vrCfxB0mCSed62b6XdQxHxAfCBpCdJFop7B5gVESsA0rmnGoGpwFGSrgC6ATsD84GHO/aUzWrj\nAmPWOevT7wIej4izKu+UNPJzbu864MmIOC1dIOqpVtpVTyLYcv2jits2Aw3pUdQtQFNEvCFpHMkM\n2GaZ8hCZWX3MAA6TNAhAUjdJQ0iGvAamxQLgzHa20xP4V3r53DbanSqpq6RdSGb0bWu9oJZisjo9\nL3R6OxnM6sIFxqwOImIVSUGYKGkuScEZlg5jXQg8Jmkq8B/g3TY29XPgp5KmkSyX0JpZwN/Sx7ku\nIlpdICpdDfUOkmV7J5Hf4nW2jfN0/WYZk9Q9Ital79y6GXgtIn7die2NA9ZFxC/rldEsCz6CMcve\nBekJ9/kkQ2C3F5zHLBc+gjErgKTzgEurbp4WET8oIo9ZFlxgzMwsEx4iMzOzTLjAmJlZJlxgzMws\nEy4wZmaWCRcYMzPLxP8A2YEUHtr+b8MAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd6c4470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch5_1.best_score_, gsearch5_1.best_params_))\n",
    "test_means = gsearch5_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch5_1.cv_results_).to_csv('my_preds_reg_alpha_reg_lambda_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#log_reg_alpha = [0,0,0,0]\n",
    "#for index in range(len(reg_alpha)):\n",
    "#   log_reg_alpha[index] = math.log10(reg_alpha[index])\n",
    "    \n",
    "for i, value in enumerate(reg_alpha):\n",
    "    pyplot.plot(reg_lambda, -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'reg_alpha' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'reg_alpha_vs_reg_lambda1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最佳reg_alpha为1.5, reg_lambda为 0.5"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "再次寻找最佳的参数n_estimators\n",
    "\n",
    "调小学习率\n",
    "\n",
    "此前已经调好的参数： n_estimators：234 max_depth：7 min_child_weight：4 reg_alpha：1.5 reg_lambda：0.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('6_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "   #Print model report:\n",
    "    print ('logloss of train is:', logloss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logloss of train is: 0.467305142667\n"
     ]
    }
   ],
   "source": [
    "xgb6 = XGBClassifier(\n",
    "        learning_rate =0.02,\n",
    "        n_estimators=2000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=7,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample = 0.5,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        reg_alpha = 1.5,\n",
    "        reg_lambda = 0.5,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb6, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'base_score': 0.5,\n",
       " 'colsample_bylevel': 0.7,\n",
       " 'colsample_bytree': 0.8,\n",
       " 'gamma': 0,\n",
       " 'learning_rate': 0.02,\n",
       " 'max_delta_step': 0,\n",
       " 'max_depth': 7,\n",
       " 'min_child_weight': 4,\n",
       " 'missing': None,\n",
       " 'n_estimators': 834,\n",
       " 'objective': 'multi:softprob',\n",
       " 'reg_alpha': 1.5,\n",
       " 'reg_lambda': 0.5,\n",
       " 'scale_pos_weight': 1,\n",
       " 'seed': 3,\n",
       " 'silent': 1,\n",
       " 'subsample': 0.5}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb6.get_xgb_params()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最佳参数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### 保存模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle\n",
    "pickle.dump(xgb6, open(\"xgb_model.pkl\", 'wb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logloss of train is: 0.467305142667\n"
     ]
    }
   ],
   "source": [
    "#保存数据\n",
    "import pickle\n",
    "\n",
    "xgb = pickle.load(open(\"xgb_model.pkl\", 'rb'))\n",
    "\n",
    "train_predprob = xgb.predict_proba(X_train)\n",
    "logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "#Print model report:\n",
    "print ('logloss of train is:', logloss)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 在测试集上进行测试"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2950</td>\n",
       "      <td>1475.000000</td>\n",
       "      <td>1475.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>950.000000</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3758</td>\n",
       "      <td>1879.000000</td>\n",
       "      <td>1879.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>3300</td>\n",
       "      <td>1650.000000</td>\n",
       "      <td>1100.000000</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2</td>\n",
       "      <td>4900</td>\n",
       "      <td>1633.333333</td>\n",
       "      <td>1633.333333</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 227 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.0         1   2950      1475.000000     1475.000000        0.0   \n",
       "1        1.0         2   2850      1425.000000      950.000000       -1.0   \n",
       "2        1.0         1   3758      1879.000000     1879.000000        0.0   \n",
       "3        1.0         2   3300      1650.000000     1100.000000       -1.0   \n",
       "4        2.0         2   4900      1633.333333     1633.333333        0.0   \n",
       "\n",
       "   room_num  Year  Month  Day  ...   virtual  walk  walls  war  washer  water  \\\n",
       "0       2.0  2016      6   11  ...         0     0      0    0       0      0   \n",
       "1       3.0  2016      6   24  ...         0     0      0    1       0      0   \n",
       "2       2.0  2016      6    3  ...         0     0      0    0       0      0   \n",
       "3       3.0  2016      6   11  ...         0     0      0    0       0      0   \n",
       "4       4.0  2016      4   12  ...         0     0      0    1       0      0   \n",
       "\n",
       "   wheelchair  wifi  windows  work  \n",
       "0           0     0        0     0  \n",
       "1           0     0        0     0  \n",
       "2           0     0        0     0  \n",
       "3           1     0        0     0  \n",
       "4           0     0        0     0  \n",
       "\n",
       "[5 rows x 227 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dpath = './data/'\n",
    "test = pd.read_csv(dpath+\"RentListingInquries_FE_test.csv\")\n",
    "test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "#数据准备\n",
    "# test_id = test['listing_id']\n",
    "\n",
    "X_test = test"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 加载训练好的模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#保存数据\n",
    "import pickle\n",
    "\n",
    "xgb = pickle.load(open(\"xgb_model.pkl\", 'rb'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 生成测试结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_test_pred = xgb.predict_proba(X_test)\n",
    "\n",
    "out_df1 = pd.DataFrame(y_test_pred)\n",
    "out_df1.columns = [\"high\", \"medium\", \"low\"]\n",
    "\n",
    "out_df = pd.concat([test_id,out_df1], axis = 1)\n",
    "out_df.to_csv(\"xgb_Rent.csv\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
